diff --git a/src/data-source.ts b/src/data-source.ts index 63de0f8..85fe595 100644 --- a/src/data-source.ts +++ b/src/data-source.ts @@ -56,6 +56,19 @@ import { SettingsFromEnv1745059495807 } from "./migrations/1745059495807-setting import { MemberCreatedAt1746006549262 } from "./migrations/1746006549262-memberCreatedAt"; import { UserLoginRoutine1746252454922 } from "./migrations/1746252454922-UserLoginRoutine"; import { SettingsFromEnv_SET1745059495808 } from "./migrations/1745059495808-settingsFromEnv_set"; +import { equipmentType } from "./entity/unit/equipment/equipmentType"; +import { equipment } from "./entity/unit/equipment/equipment"; +import { vehicleType } from "./entity/unit/vehicle/vehicleType"; +import { vehicle } from "./entity/unit/vehicle/vehicle"; +import { wearableType } from "./entity/unit/wearable/wearableType"; +import { wearable } from "./entity/unit/wearable/wearable"; +import { damageReport } from "./entity/unit/damageReport"; +import { inspectionPlan } from "./entity/unit/inspection/inspectionPlan"; +import { inspectionVersionedPlan } from "./entity/unit/inspection/inspectionVersionedPlan"; +import { inspectionPoint } from "./entity/unit/inspection/inspectionPoint"; +import { inspection } from "./entity/unit/inspection/inspection"; +import { inspectionPointResult } from "./entity/unit/inspection/inspectionPointResult"; +import { UnitBase1748261477410 } from "./migrations/1748261477410-unitBase"; configCheck(); @@ -111,6 +124,18 @@ const dataSource = new DataSource({ webapi, webapiPermission, setting, + equipmentType, + equipment, + vehicleType, + vehicle, + wearableType, + wearable, + damageReport, + inspectionPlan, + inspectionVersionedPlan, + inspectionPoint, + inspection, + inspectionPointResult, ], migrations: [ BackupAndResetDatabase1738166124200, @@ -123,6 +148,7 @@ const dataSource = new DataSource({ SettingsFromEnv_SET1745059495808, MemberCreatedAt1746006549262, UserLoginRoutine1746252454922, + UnitBase1748261477410, ], migrationsRun: true, migrationsTransactionMode: "each", diff --git a/src/entity/unit/damageReport.ts b/src/entity/unit/damageReport.ts index 746a25f..54bd219 100644 --- a/src/entity/unit/damageReport.ts +++ b/src/entity/unit/damageReport.ts @@ -20,13 +20,13 @@ export class damageReport { @Column({ type: "text" }) description: string; - @Column({ nullable: true }) + @Column({ nullable: true, default: null }) equipmentId: string; - @Column({ nullable: true }) + @Column({ nullable: true, default: null }) vehicleId: string; - @Column({ nullable: true }) + @Column({ nullable: true, default: null }) wearableId: string; @ManyToOne(() => equipment, { diff --git a/src/entity/unit/equipment/equipment.ts b/src/entity/unit/equipment/equipment.ts index 252c035..22df384 100644 --- a/src/entity/unit/equipment/equipment.ts +++ b/src/entity/unit/equipment/equipment.ts @@ -8,7 +8,7 @@ export class equipment { @PrimaryGeneratedColumn("uuid") id: string; - @Column({ type: "varchar", length: 255, nullable: true, unique: true }) + @Column({ type: "varchar", length: 255, nullable: true, default: null, unique: true }) code?: string; @Column({ type: "varchar", length: 255 }) @@ -20,7 +20,7 @@ export class equipment { @Column({ type: getTypeByORM("datetime").type as ColumnType }) commissioned: Date; - @Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true }) + @Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null }) decommissioned?: Date; @Column() diff --git a/src/entity/unit/equipment/equipmentType.ts b/src/entity/unit/equipment/equipmentType.ts index 9aa6366..d28fb72 100644 --- a/src/entity/unit/equipment/equipmentType.ts +++ b/src/entity/unit/equipment/equipmentType.ts @@ -6,7 +6,7 @@ export class equipmentType { @PrimaryGeneratedColumn("uuid") id: string; - @Column({ type: "varchar", length: 255 }) + @Column({ type: "varchar", length: 255, unique: true }) type: string; @Column({ type: "text", nullable: true }) diff --git a/src/entity/unit/inspection/inspection.ts b/src/entity/unit/inspection/inspection.ts index 825caee..23460f6 100644 --- a/src/entity/unit/inspection/inspection.ts +++ b/src/entity/unit/inspection/inspection.ts @@ -16,21 +16,37 @@ export class inspection { @CreateDateColumn() createdAt: Date; - @Column({ type: getTypeByORM("date").type as ColumnType, nullable: true }) + @Column({ type: getTypeByORM("date").type as ColumnType, nullable: true, default: null }) finishedAt?: Date; - @Column({ type: getTypeByORM("date").type as ColumnType, nullable: true }) + @Column({ type: getTypeByORM("date").type as ColumnType, nullable: true, default: null }) nextInspection?: Date; - @ManyToOne(() => inspectionPlan) + @ManyToOne(() => inspectionPlan, { + nullable: false, + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }) inspectionPlan: inspectionPlan; - @ManyToOne(() => inspectionVersionedPlan) + @ManyToOne(() => inspectionVersionedPlan, { + nullable: false, + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }) inspectionVersionedPlan: inspectionVersionedPlan; - @ManyToOne(() => equipment) + @ManyToOne(() => equipment, { + nullable: true, + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }) equipment: equipment; - @ManyToOne(() => vehicle) + @ManyToOne(() => vehicle, { + nullable: true, + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }) vehicle: vehicle; } diff --git a/src/entity/unit/inspection/inspectionPlan.ts b/src/entity/unit/inspection/inspectionPlan.ts index b2c4358..9be6406 100644 --- a/src/entity/unit/inspection/inspectionPlan.ts +++ b/src/entity/unit/inspection/inspectionPlan.ts @@ -19,7 +19,7 @@ export class inspectionPlan { remindTime: PlanTimeDefinition; @CreateDateColumn() - created: Date; + createdAt: Date; @Column() equipmentId: string; diff --git a/src/entity/unit/inspection/inspectionPoint.ts b/src/entity/unit/inspection/inspectionPoint.ts index 28be6e0..5185355 100644 --- a/src/entity/unit/inspection/inspectionPoint.ts +++ b/src/entity/unit/inspection/inspectionPoint.ts @@ -27,9 +27,15 @@ export class inspectionPoint { }) type: InspectionPointEnum; - @Column({ type: "int", default: 0 }) + @Column({ type: "int", nullable: true, default: null }) min: number; + @Column({ type: "int", nullable: true, default: null }) + max: number; + + @Column() + versionedPlanId: string; + @ManyToOne(() => inspectionVersionedPlan, { nullable: false, onDelete: "CASCADE", diff --git a/src/entity/unit/inspection/inspectionPointResult.ts b/src/entity/unit/inspection/inspectionPointResult.ts index 018649b..4b44146 100644 --- a/src/entity/unit/inspection/inspectionPointResult.ts +++ b/src/entity/unit/inspection/inspectionPointResult.ts @@ -10,9 +10,17 @@ export class inspectionPointResult { @Column({ type: "text" }) value: string; - @ManyToOne(() => inspection) + @ManyToOne(() => inspection, { + nullable: false, + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }) inspection: inspection; - @ManyToOne(() => inspectionPoint) + @ManyToOne(() => inspectionPoint, { + nullable: false, + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }) inspectionPoint: inspectionPoint; } diff --git a/src/entity/unit/vehicle/vehicle.ts b/src/entity/unit/vehicle/vehicle.ts index a2cd129..0c30847 100644 --- a/src/entity/unit/vehicle/vehicle.ts +++ b/src/entity/unit/vehicle/vehicle.ts @@ -8,7 +8,7 @@ export class vehicle { @PrimaryGeneratedColumn("uuid") id: string; - @Column({ type: "varchar", length: 255, nullable: true, unique: true }) + @Column({ type: "varchar", length: 255, nullable: true, default: null, unique: true }) code?: string; @Column({ type: "varchar", length: 255 }) @@ -20,7 +20,7 @@ export class vehicle { @Column({ type: getTypeByORM("datetime").type as ColumnType }) commissioned: Date; - @Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true }) + @Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null }) decommissioned?: Date; @Column() diff --git a/src/entity/unit/vehicle/vehicleType.ts b/src/entity/unit/vehicle/vehicleType.ts index fba4177..5773709 100644 --- a/src/entity/unit/vehicle/vehicleType.ts +++ b/src/entity/unit/vehicle/vehicleType.ts @@ -6,7 +6,7 @@ export class vehicleType { @PrimaryGeneratedColumn("uuid") id: string; - @Column({ type: "varchar", length: 255 }) + @Column({ type: "varchar", length: 255, unique: true }) type: string; @Column({ type: "text", nullable: true }) diff --git a/src/entity/unit/wearable/wearable.ts b/src/entity/unit/wearable/wearable.ts index 509732d..75a64b7 100644 --- a/src/entity/unit/wearable/wearable.ts +++ b/src/entity/unit/wearable/wearable.ts @@ -9,7 +9,7 @@ export class wearable { @PrimaryGeneratedColumn("uuid") id: string; - @Column({ type: "varchar", length: 255, nullable: true, unique: true }) + @Column({ type: "varchar", length: 255, nullable: true, default: null, unique: true }) code?: string; @Column({ type: "varchar", length: 255 }) @@ -21,7 +21,7 @@ export class wearable { @Column({ type: getTypeByORM("datetime").type as ColumnType }) commissioned: Date; - @Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true }) + @Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null }) decommissioned?: Date; @Column() diff --git a/src/entity/unit/wearable/wearableType.ts b/src/entity/unit/wearable/wearableType.ts index 71e553e..0905a33 100644 --- a/src/entity/unit/wearable/wearableType.ts +++ b/src/entity/unit/wearable/wearableType.ts @@ -6,7 +6,7 @@ export class wearableType { @PrimaryGeneratedColumn("uuid") id: string; - @Column({ type: "varchar", length: 255 }) + @Column({ type: "varchar", length: 255, unique: true }) type: string; @Column({ type: "text", nullable: true }) diff --git a/src/migrations/1748261477410-unitBase.ts b/src/migrations/1748261477410-unitBase.ts new file mode 100644 index 0000000..d4951c6 --- /dev/null +++ b/src/migrations/1748261477410-unitBase.ts @@ -0,0 +1,57 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; +import { + equipment_table, + equipment_type_table, + vehicle_table, + vehicle_type_table, + wearable_table, + wearable_type_table, +} from "./baseSchemaTables/unit"; +import { damage_report_table } from "./baseSchemaTables/unit_extend"; +import { + inspection_plan_table, + inspection_point_result_table, + inspection_point_table, + inspection_table, + inspection_versioned_plan_table, +} from "./baseSchemaTables/inspection"; + +export class UnitBase1748261477410 implements MigrationInterface { + name = "UnitBase1748261477410"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.createTable(equipment_type_table, true, true, true); + await queryRunner.createTable(equipment_table, true, true, true); + await queryRunner.createTable(vehicle_type_table, true, true, true); + await queryRunner.createTable(vehicle_table, true, true, true); + await queryRunner.createTable(wearable_type_table, true, true, true); + await queryRunner.createTable(wearable_table, true, true, true); + + await queryRunner.createTable(damage_report_table, true, true, true); + + await queryRunner.createTable(inspection_plan_table, true, true, true); + await queryRunner.createTable(inspection_versioned_plan_table, true, true, true); + await queryRunner.createTable(inspection_point_table, true, true, true); + + await queryRunner.createTable(inspection_table, true, true, true); + await queryRunner.createTable(inspection_point_result_table, true, true, true); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable(inspection_point_result_table, true, true, true); + await queryRunner.dropTable(inspection_table, true, true, true); + + await queryRunner.dropTable(inspection_point_table, true, true, true); + await queryRunner.dropTable(inspection_versioned_plan_table, true, true, true); + await queryRunner.dropTable(inspection_plan_table, true, true, true); + + await queryRunner.dropTable(damage_report_table, true, true, true); + + await queryRunner.dropTable(wearable_table, true, true, true); + await queryRunner.dropTable(wearable_type_table, true, true, true); + await queryRunner.dropTable(vehicle_table, true, true, true); + await queryRunner.dropTable(vehicle_type_table, true, true, true); + await queryRunner.dropTable(equipment_table, true, true, true); + await queryRunner.dropTable(equipment_type_table, true, true, true); + } +} diff --git a/src/migrations/baseSchemaTables/inspection.ts b/src/migrations/baseSchemaTables/inspection.ts new file mode 100644 index 0000000..9048e95 --- /dev/null +++ b/src/migrations/baseSchemaTables/inspection.ts @@ -0,0 +1,149 @@ +import { Table, TableForeignKey, TableUnique, Unique } from "typeorm"; +import { getTypeByORM, isUUIDPrimary, getDefaultByORM } from "../ormHelper"; + +export const inspection_plan_table = new Table({ + name: "inspection_plan", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "title", ...getTypeByORM("varchar") }, + { name: "inspectionInterval", ...getTypeByORM("varchar") }, + { name: "remindTime", ...getTypeByORM("varchar") }, + { name: "createdAt", ...getTypeByORM("date"), default: getDefaultByORM("currentTimestamp") }, + { name: "equipmentId", ...getTypeByORM("uuid", true), default: getDefaultByORM("null") }, + { name: "vehicleId", ...getTypeByORM("uuid", true), default: getDefaultByORM("null") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["equipmentId"], + referencedColumnNames: ["id"], + referencedTableName: "equipment", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + new TableForeignKey({ + columnNames: ["vehicleId"], + referencedColumnNames: ["id"], + referencedTableName: "vehicle", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + ], +}); + +export const inspection_versioned_plan_table = new Table({ + name: "inspection_versioned_plan", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "version", ...getTypeByORM("int"), default: getDefaultByORM("number", 0) }, + { name: "createdAt", ...getTypeByORM("date"), default: getDefaultByORM("currentTimestamp") }, + { name: "inspectionPlanId", ...getTypeByORM("uuid") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["inspectionPlanId"], + referencedColumnNames: ["id"], + referencedTableName: "inspection_plan", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + ], + uniques: [ + new TableUnique({ + name: "unique_version", + columnNames: ["version", "inspectionPlanId"], + }), + ], +}); + +export const inspection_point_table = new Table({ + name: "inspection_point", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "title", ...getTypeByORM("varchar") }, + { name: "description", ...getTypeByORM("text") }, + { name: "type", ...getTypeByORM("varchar") }, + { name: "min", ...getTypeByORM("int", true), default: getDefaultByORM("null") }, + { name: "max", ...getTypeByORM("int", true), default: getDefaultByORM("null") }, + { name: "versionedPlanId", ...getTypeByORM("uuid") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["versionedPlanId"], + referencedColumnNames: ["id"], + referencedTableName: "inspection_versioned_plan", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + ], +}); + +export const inspection_table = new Table({ + name: "inspection", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "context", ...getTypeByORM("text") }, + { name: "createdAt", ...getTypeByORM("date"), default: getDefaultByORM("currentTimestamp") }, + { name: "finishedAt", ...getTypeByORM("date", true) }, + { name: "nextInspection", ...getTypeByORM("date", true) }, + { name: "inspectionPlanId", ...getTypeByORM("uuid") }, + { name: "inspectionVersionedPlanId", ...getTypeByORM("uuid") }, + { name: "equipmentId", ...getTypeByORM("uuid", true), default: getDefaultByORM("null") }, + { name: "vehicleId", ...getTypeByORM("uuid", true), default: getDefaultByORM("null") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["inspectionPlanId"], + referencedColumnNames: ["id"], + referencedTableName: "inspection_plan", + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }), + new TableForeignKey({ + columnNames: ["inspectionVersionedPlanId"], + referencedColumnNames: ["id"], + referencedTableName: "inspection_versioned_plan", + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }), + new TableForeignKey({ + columnNames: ["equipmentId"], + referencedColumnNames: ["id"], + referencedTableName: "equipment", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + new TableForeignKey({ + columnNames: ["vehicleId"], + referencedColumnNames: ["id"], + referencedTableName: "vehicle", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + ], +}); + +export const inspection_point_result_table = new Table({ + name: "inspection_point_result", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "value", ...getTypeByORM("text") }, + { name: "inspectionId", ...getTypeByORM("uuid") }, + { name: "inspectionPointId", ...getTypeByORM("uuid") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["inspectionId"], + referencedColumnNames: ["id"], + referencedTableName: "inspection", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + new TableForeignKey({ + columnNames: ["inspectionPointId"], + referencedColumnNames: ["id"], + referencedTableName: "inspection_point", + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }), + ], +}); diff --git a/src/migrations/baseSchemaTables/unit.ts b/src/migrations/baseSchemaTables/unit.ts new file mode 100644 index 0000000..aec48b3 --- /dev/null +++ b/src/migrations/baseSchemaTables/unit.ts @@ -0,0 +1,103 @@ +import { Table, TableForeignKey } from "typeorm"; +import { getTypeByORM, isUUIDPrimary, getDefaultByORM } from "../ormHelper"; + +export const equipment_table = new Table({ + name: "equipment", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "code", ...getTypeByORM("varchar", true), default: getDefaultByORM("null"), isUnique: true }, + { name: "name", ...getTypeByORM("varchar") }, + { name: "location", ...getTypeByORM("varchar") }, + { name: "commissioned", ...getTypeByORM("date") }, + { name: "decommissioned", ...getTypeByORM("date", true), default: getDefaultByORM("null") }, + { name: "equipmentTypeId", ...getTypeByORM("uuid") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["equipmentTypeId"], + referencedColumnNames: ["id"], + referencedTableName: "equipment_type", + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }), + ], +}); + +export const equipment_type_table = new Table({ + name: "equipment_type", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "type", ...getTypeByORM("varchar"), isUnique: true }, + { name: "description", ...getTypeByORM("text") }, + ], +}); + +export const vehicle_table = new Table({ + name: "vehicle", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "code", ...getTypeByORM("varchar", true), default: getDefaultByORM("null"), isUnique: true }, + { name: "name", ...getTypeByORM("varchar") }, + { name: "location", ...getTypeByORM("varchar") }, + { name: "commissioned", ...getTypeByORM("date") }, + { name: "decommissioned", ...getTypeByORM("date", true), default: getDefaultByORM("null") }, + { name: "vehicleTypeId", ...getTypeByORM("uuid") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["vehicleTypeId"], + referencedColumnNames: ["id"], + referencedTableName: "vehicle_type", + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }), + ], +}); + +export const vehicle_type_table = new Table({ + name: "vehicle_type", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "type", ...getTypeByORM("varchar"), isUnique: true }, + { name: "description", ...getTypeByORM("text") }, + ], +}); + +export const wearable_table = new Table({ + name: "wearable", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "code", ...getTypeByORM("varchar", true), default: getDefaultByORM("null"), isUnique: true }, + { name: "name", ...getTypeByORM("varchar") }, + { name: "location", ...getTypeByORM("varchar") }, + { name: "commissioned", ...getTypeByORM("date") }, + { name: "decommissioned", ...getTypeByORM("date", true), default: getDefaultByORM("null") }, + { name: "wearableTypeId", ...getTypeByORM("uuid") }, + { name: "wearerId", ...getTypeByORM("uuid", true), default: getDefaultByORM("null") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["wearableTypeId"], + referencedColumnNames: ["id"], + referencedTableName: "wearable_type", + onDelete: "RESTRICT", + onUpdate: "RESTRICT", + }), + new TableForeignKey({ + columnNames: ["wearerId"], + referencedColumnNames: ["id"], + referencedTableName: "member", + onDelete: "SET NULL", + onUpdate: "RESTRICT", + }), + ], +}); + +export const wearable_type_table = new Table({ + name: "wearable_type", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "type", ...getTypeByORM("varchar"), isUnique: true }, + { name: "description", ...getTypeByORM("text") }, + ], +}); diff --git a/src/migrations/baseSchemaTables/unit_extend.ts b/src/migrations/baseSchemaTables/unit_extend.ts new file mode 100644 index 0000000..49ce9e9 --- /dev/null +++ b/src/migrations/baseSchemaTables/unit_extend.ts @@ -0,0 +1,39 @@ +import { Table, TableForeignKey } from "typeorm"; +import { getTypeByORM, isUUIDPrimary, getDefaultByORM } from "../ormHelper"; + +export const damage_report_table = new Table({ + name: "damage_report", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "reportedAt", ...getTypeByORM("date"), default: getDefaultByORM("currentTimestamp") }, + { name: "status", ...getTypeByORM("varchar") }, + { name: "done", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) }, + { name: "description", ...getTypeByORM("text") }, + { name: "equipmentId", ...getTypeByORM("uuid", true), default: getDefaultByORM("null") }, + { name: "vehicleId", ...getTypeByORM("uuid", true), default: getDefaultByORM("null") }, + { name: "wearableId", ...getTypeByORM("uuid", true), default: getDefaultByORM("null") }, + ], + foreignKeys: [ + new TableForeignKey({ + columnNames: ["equipmentId"], + referencedColumnNames: ["id"], + referencedTableName: "equipment", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + new TableForeignKey({ + columnNames: ["vehicleId"], + referencedColumnNames: ["id"], + referencedTableName: "vehicle", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + new TableForeignKey({ + columnNames: ["wearableId"], + referencedColumnNames: ["id"], + referencedTableName: "wearable", + onDelete: "CASCADE", + onUpdate: "RESTRICT", + }), + ], +});