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: "sort", ...getTypeByORM("int"), default: getDefaultByORM("number", 0) }, { 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", }), ], });