[Updater] Add migration, update models

This commit is contained in:
joonas-a
2026-09-21 15:24:21 +03:00
committed by Aaro Koivukangas
parent b8e9d59217
commit 5bd7fb6792
6 changed files with 112 additions and 64 deletions
+38 -33
View File
@@ -21,15 +21,19 @@ import { EnrollmentModel } from './enrollment'
import { OrganizationModel } from './organization'
@Table({
underscored: false,
underscored: true,
modelName: 'course',
tableName: 'course',
})
export class CourseModel extends Model implements Course {
/* COLUMNS */
@PrimaryKey
@Column(DataType.STRING)
declare id: Course['id']
@Column(DataType.STRING)
declare groupId: Course['id']
@ForeignKey(() => CourseModel)
@Column(DataType.STRING)
declare code: Course['code']
@@ -38,6 +42,39 @@ export class CourseModel extends Model implements Course {
@Column(DataType.STRING)
declare coursetypecode: Course['coursetypecode']
@Column(DataType.BOOLEAN)
declare isStudyModule: Course['isStudyModule']
@Column(DataType.JSONB)
declare name: Course['name']
@Column(DataType.DATE)
declare maxAttainmentDate: Course['maxAttainmentDate']
@Column(DataType.DATE)
declare minAttainmentDate: Course['minAttainmentDate']
@CreatedAt
@Column({ field: 'created_at', type: DataType.DATE })
declare createdAt: Course['createdAt']
@UpdatedAt
@Column({ field: 'updated_at', type: DataType.DATE })
declare updatedAt: Course['updatedAt']
@Column(DataType.JSONB)
declare validityPeriod: Course['validityPeriod']
@Column(DataType.JSONB)
declare substitutionGroups: Course['substitutionGroups']
@Column(DataType.BOOLEAN)
declare isPrimary: Course['isPrimary']
@Column(DataType.STRING)
declare courseUnitType: Course['courseUnitType']
/* RELATIONS */
@BelongsTo(() => CourseTypeModel, { foreignKey: 'coursetypecode', targetKey: 'coursetypecode' })
declare courseType: Course['courseType']
@@ -49,36 +86,4 @@ export class CourseModel extends Model implements Course {
@BelongsToMany(() => OrganizationModel, () => CourseProviderModel, 'coursecode')
declare organizations: Course['organizations']
@Column(DataType.BOOLEAN)
declare is_study_module: Course['is_study_module']
@Column(DataType.JSONB)
declare name: Course['name']
@Column(DataType.DATE)
declare max_attainment_date: Course['max_attainment_date']
@Column(DataType.DATE)
declare min_attainment_date: Course['min_attainment_date']
@CreatedAt
@Column({ field: 'created_at', type: DataType.DATE })
declare createdAt: Course['createdAt']
@UpdatedAt
@Column({ field: 'updated_at', type: DataType.DATE })
declare updatedAt: Course['updatedAt']
@Column(DataType.JSONB)
declare substitutions: Course['substitutions']
@Column(DataType.JSONB)
declare substitution_groups: Course['substitution_groups']
@Column(DataType.STRING)
declare course_unit_type: Course['course_unit_type']
@Column({ field: 'main_course_code', type: DataType.STRING })
declare mainCourseCode: Course['mainCourseCode']
}
+14 -10
View File
@@ -6,21 +6,25 @@ import type { Enrollment } from './enrollment'
import type { Organization } from './organization'
export type Course = {
/* COLUMNS */
id: string
groupId: string
code: string
coursetypecode: string
isStudyModule: boolean
isPrimary: boolean
name: Name
maxAttainmentDate: Date | null
minAttainmentDate: Date | null
createdAt: Date
updatedAt: Date
substitutionGroups: string[][]
validityPeriod: { startDate?: Date; endDate?: Date } | null
courseUnitType: string
/* RELATIONS */
courseType: CourseType
credits: Credit[]
enrollments: Enrollment[]
organizations: Organization[]
is_study_module: boolean
name: Name
max_attainment_date: Date
min_attainment_date: Date
createdAt: Date
updatedAt: Date
substitutions: string[]
substitution_groups: string[][]
course_unit_type: string
mainCourseCode: string
}