base migration and schema optimization
This commit is contained in:
parent
0d8499b828
commit
d156cc6ad6
16 changed files with 426 additions and 22 deletions
57
src/migrations/1748261477410-unitBase.ts
Normal file
57
src/migrations/1748261477410-unitBase.ts
Normal file
|
@ -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<void> {
|
||||
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<void> {
|
||||
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);
|
||||
}
|
||||
}
|
149
src/migrations/baseSchemaTables/inspection.ts
Normal file
149
src/migrations/baseSchemaTables/inspection.ts
Normal file
|
@ -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",
|
||||
}),
|
||||
],
|
||||
});
|
103
src/migrations/baseSchemaTables/unit.ts
Normal file
103
src/migrations/baseSchemaTables/unit.ts
Normal file
|
@ -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") },
|
||||
],
|
||||
});
|
39
src/migrations/baseSchemaTables/unit_extend.ts
Normal file
39
src/migrations/baseSchemaTables/unit_extend.ts
Normal file
|
@ -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",
|
||||
}),
|
||||
],
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue