import { Table, TableForeignKey, TableUnique } 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", true) }, { name: "remindTime", ...getTypeByORM("varchar", true) }, { name: "createdAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") }, { name: "equipmentTypeId", ...getTypeByORM("uuid", true) }, { name: "vehicleTypeId", ...getTypeByORM("uuid", true) }, { name: "wearableTypeId", ...getTypeByORM("uuid", true) }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["equipmentTypeId"], referencedColumnNames: ["id"], referencedTableName: "equipment_type", onDelete: "CASCADE", onUpdate: "RESTRICT", }), new TableForeignKey({ columnNames: ["vehicleTypeId"], referencedColumnNames: ["id"], referencedTableName: "vehicle_type", onDelete: "CASCADE", onUpdate: "RESTRICT", }), new TableForeignKey({ columnNames: ["wearableTypeId"], referencedColumnNames: ["id"], referencedTableName: "wearable_type", 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("datetime"), 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) }, { name: "max", ...getTypeByORM("int", true) }, { name: "others", ...getTypeByORM("varchar", true) }, { 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("datetime"), default: getDefaultByORM("currentTimestamp") }, { name: "finishedAt", ...getTypeByORM("datetime", true) }, { name: "finishedById", ...getTypeByORM("uuid", true) }, { name: "finishedByString", ...getTypeByORM("varchar", true) }, { name: "nextInspection", ...getTypeByORM("date", true) }, { name: "hasNewer", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) }, { name: "inspectionPlanId", ...getTypeByORM("uuid") }, { name: "inspectionVersionedPlanId", ...getTypeByORM("uuid") }, { name: "equipmentId", ...getTypeByORM("uuid", true) }, { name: "vehicleId", ...getTypeByORM("uuid", true) }, { name: "wearableId", ...getTypeByORM("uuid", true) }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["finishedById"], referencedColumnNames: ["id"], referencedTableName: "user", onDelete: "SET NULL", onUpdate: "RESTRICT", }), 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", }), new TableForeignKey({ columnNames: ["wearableId"], referencedColumnNames: ["id"], referencedTableName: "wearable", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const inspection_point_result_table = new Table({ name: "inspection_point_result", columns: [ { name: "inspectionId", ...getTypeByORM("uuid"), isPrimary: true }, { name: "inspectionPointId", ...getTypeByORM("uuid"), isPrimary: true }, { name: "value", ...getTypeByORM("text") }, ], 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", }), ], });