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