先提交上去

This commit is contained in:
Fox_block
2026-03-16 20:49:46 +08:00
parent 86abcb5602
commit 192b48cab0
303 changed files with 30019 additions and 5846 deletions
@@ -0,0 +1,23 @@
import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'
@Entity({ name: 'reasons' })
export class ReasonEntity {
@PrimaryGeneratedColumn()
id!: number
@Index({ unique: true })
@Column({ type: 'text' })
content!: string
@Column({ type: 'text', default: '其他' })
category!: string
@Column({ type: 'integer' })
delta!: number
@Column({ type: 'integer', default: 0 })
is_system!: number
@Column({ type: 'text', default: () => 'CURRENT_TIMESTAMP' })
updated_at!: string
}
@@ -0,0 +1,33 @@
import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'
@Entity({ name: 'score_events' })
export class ScoreEventEntity {
@PrimaryGeneratedColumn()
id!: number
@Index({ unique: true })
@Column({ type: 'text' })
uuid!: string
@Column({ type: 'text' })
student_name!: string
@Column({ type: 'text' })
reason_content!: string
@Column({ type: 'integer' })
delta!: number
@Column({ type: 'integer' })
val_prev!: number
@Column({ type: 'integer' })
val_curr!: number
@Column({ type: 'text', default: () => 'CURRENT_TIMESTAMP' })
event_time!: string
@Index()
@Column({ type: 'integer', nullable: true })
settlement_id!: number | null
}
@@ -0,0 +1,10 @@
import { Column, Entity, PrimaryColumn } from 'typeorm'
@Entity({ name: 'settings' })
export class SettingEntity {
@PrimaryColumn({ type: 'text' })
key!: string
@Column({ type: 'text', nullable: true })
value!: string | null
}
@@ -0,0 +1,16 @@
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'
@Entity({ name: 'settlements' })
export class SettlementEntity {
@PrimaryGeneratedColumn()
id!: number
@Column({ type: 'text' })
start_time!: string
@Column({ type: 'text' })
end_time!: string
@Column({ type: 'text', default: () => 'CURRENT_TIMESTAMP' })
created_at!: string
}
@@ -0,0 +1,34 @@
import { Column, Entity, PrimaryGeneratedColumn, ManyToMany, JoinTable } from 'typeorm'
import { TagEntity } from './TagEntity'
@Entity({ name: 'students' })
export class StudentEntity {
@PrimaryGeneratedColumn()
id!: number
@Column({ type: 'text' })
name!: string
@Column({ type: 'text', default: '[]' })
tags!: string
@Column({ type: 'integer', default: 0 })
score!: number
@Column({ type: 'text', nullable: true })
extra_json!: string | null
@Column({ type: 'text', default: () => 'CURRENT_TIMESTAMP' })
created_at!: string
@Column({ type: 'text', default: () => 'CURRENT_TIMESTAMP' })
updated_at!: string
@ManyToMany(() => TagEntity, { cascade: true })
@JoinTable({
name: 'student_tags',
joinColumn: { name: 'student_id', referencedColumnName: 'id' },
inverseJoinColumn: { name: 'tag_id', referencedColumnName: 'id' }
})
tagEntities!: TagEntity[]
}
@@ -0,0 +1,27 @@
import { Column, Entity, PrimaryGeneratedColumn, ManyToOne, JoinColumn, Index } from 'typeorm'
import { StudentEntity } from './StudentEntity'
import { TagEntity } from './TagEntity'
@Entity({ name: 'student_tags' })
@Index(['student_id', 'tag_id'], { unique: true })
export class StudentTagEntity {
@PrimaryGeneratedColumn()
id!: number
@Column({ name: 'student_id', type: 'integer' })
student_id!: number
@Column({ name: 'tag_id', type: 'integer' })
tag_id!: number
@ManyToOne(() => StudentEntity, { onDelete: 'CASCADE' })
@JoinColumn({ name: 'student_id' })
student!: StudentEntity
@ManyToOne(() => TagEntity, { onDelete: 'CASCADE' })
@JoinColumn({ name: 'tag_id' })
tag!: TagEntity
@Column({ type: 'text', default: () => 'CURRENT_TIMESTAMP' })
created_at!: string
}
+16
View File
@@ -0,0 +1,16 @@
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'
@Entity({ name: 'tags' })
export class TagEntity {
@PrimaryGeneratedColumn()
id!: number
@Column({ type: 'text', unique: true })
name!: string
@Column({ type: 'text', default: () => 'CURRENT_TIMESTAMP' })
created_at!: string
@Column({ type: 'text', default: () => 'CURRENT_TIMESTAMP' })
updated_at!: string
}
+7
View File
@@ -0,0 +1,7 @@
export { StudentEntity } from './StudentEntity'
export { ReasonEntity } from './ReasonEntity'
export { ScoreEventEntity } from './ScoreEventEntity'
export { SettlementEntity } from './SettlementEntity'
export { SettingEntity } from './SettingEntity'
export { TagEntity } from './TagEntity'
export { StudentTagEntity } from './StudentTagEntity'