From cfec116f2c6f5b00640e836d0749ce255a67a151 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Mon, 17 Feb 2025 13:14:16 +0100 Subject: [PATCH] base data schema --- src/entity/configuration/equipment.ts | 22 +++++++++++ src/entity/configuration/member.ts | 11 +++++- src/entity/configuration/vehicle.ts | 22 +++++++++++ src/migrations/1739697068682-CreateSchema.ts | 6 ++- .../baseSchemaTables/configuration.ts | 39 +++++++++++++++++++ src/migrations/baseSchemaTables/member.ts | 12 ------ src/migrations/ormHelper.ts | 5 ++- 7 files changed, 102 insertions(+), 15 deletions(-) create mode 100644 src/entity/configuration/equipment.ts create mode 100644 src/entity/configuration/vehicle.ts create mode 100644 src/migrations/baseSchemaTables/configuration.ts delete mode 100644 src/migrations/baseSchemaTables/member.ts diff --git a/src/entity/configuration/equipment.ts b/src/entity/configuration/equipment.ts new file mode 100644 index 0000000..1d9a81d --- /dev/null +++ b/src/entity/configuration/equipment.ts @@ -0,0 +1,22 @@ +import { Column, Entity, PrimaryColumn } from "typeorm"; + +@Entity() +export class equipment { + @PrimaryColumn({ generated: "uuid" }) + id: string; + + @Column({ type: "varchar", length: 255, nullable: true, default: null, unique: true }) + code?: string; + + @Column({ type: "varchar", length: 255, nullable: true, default: null }) + type?: string; + + @Column({ type: "varchar", length: 255, unique: true }) + name: string; + + @Column({ type: "date", default: "CURRENT_TIMESTAMP" }) + commissioned: Date; + + @Column({ type: "date", nullable: true, default: null }) + decommissioned?: Date; +} diff --git a/src/entity/configuration/member.ts b/src/entity/configuration/member.ts index 999d02a..82588c9 100644 --- a/src/entity/configuration/member.ts +++ b/src/entity/configuration/member.ts @@ -2,9 +2,12 @@ import { Column, Entity, PrimaryColumn } from "typeorm"; @Entity() export class member { - @PrimaryColumn({ generated: "uuid", type: "varchar" }) + @PrimaryColumn({ generated: "uuid" }) id: string; + @Column({ type: "varchar", length: 255, nullable: true, default: null, unique: true }) + internalId?: string; + @Column({ type: "varchar", length: 255 }) firstname: string; @@ -13,4 +16,10 @@ export class member { @Column({ type: "varchar", length: 255 }) nameaffix: string; + + @Column({ type: "date", default: "CURRENT_TIMESTAMP" }) + commissioned: Date; + + @Column({ type: "date", nullable: true, default: null }) + decommissioned?: Date; } diff --git a/src/entity/configuration/vehicle.ts b/src/entity/configuration/vehicle.ts new file mode 100644 index 0000000..c77ac4c --- /dev/null +++ b/src/entity/configuration/vehicle.ts @@ -0,0 +1,22 @@ +import { Column, Entity, PrimaryColumn } from "typeorm"; + +@Entity() +export class vehicle { + @PrimaryColumn({ generated: "uuid" }) + id: string; + + @Column({ type: "varchar", length: 255, nullable: true, default: null }) + code?: string; + + @Column({ type: "varchar", length: 255, nullable: true, default: null }) + type?: string; + + @Column({ type: "varchar", length: 255, unique: true }) + name: string; + + @Column({ type: "date", default: "CURRENT_TIMESTAMP" }) + commissioned: Date; + + @Column({ type: "date", nullable: true, default: null }) + decommissioned?: Date; +} diff --git a/src/migrations/1739697068682-CreateSchema.ts b/src/migrations/1739697068682-CreateSchema.ts index 821b9e0..be4d74f 100644 --- a/src/migrations/1739697068682-CreateSchema.ts +++ b/src/migrations/1739697068682-CreateSchema.ts @@ -9,7 +9,7 @@ import { user_roles_table, user_table, } from "./baseSchemaTables/admin"; -import { member_table } from "./baseSchemaTables/member"; +import { equipment_table, member_table, vehicle_table } from "./baseSchemaTables/configuration"; export class CreateSchema1739697068682 implements MigrationInterface { name = "CreateSchema1739697068682"; @@ -25,9 +25,13 @@ export class CreateSchema1739697068682 implements MigrationInterface { await queryRunner.createTable(refresh_table, true, true, true); await queryRunner.createTable(member_table, true, true, true); + await queryRunner.createTable(equipment_table, true, true, true); + await queryRunner.createTable(vehicle_table, true, true, true); } public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable("vehicle", true, true, true); + await queryRunner.dropTable("equipment", true, true, true); await queryRunner.dropTable("member", true, true, true); await queryRunner.dropTable("refresh", true, true, true); diff --git a/src/migrations/baseSchemaTables/configuration.ts b/src/migrations/baseSchemaTables/configuration.ts new file mode 100644 index 0000000..12f299b --- /dev/null +++ b/src/migrations/baseSchemaTables/configuration.ts @@ -0,0 +1,39 @@ +import { Table } from "typeorm"; +import { getDefaultByORM, getTypeByORM, isUUIDPrimary } from "../ormHelper"; + +export const member_table = new Table({ + name: "member", + columns: [ + { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, + { name: "internalId", ...getTypeByORM("varchar", true), default: getDefaultByORM("null"), isUnique: true }, + { name: "firstname", ...getTypeByORM("varchar") }, + { name: "lastname", ...getTypeByORM("varchar") }, + { name: "nameaffix", ...getTypeByORM("varchar") }, + { name: "commissioned", ...getTypeByORM("date"), default: getDefaultByORM("currentDate") }, + { name: "decommissioned", ...getTypeByORM("date", true), default: getDefaultByORM("null") }, + ], +}); + +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: "type", ...getTypeByORM("varchar", true), default: getDefaultByORM("null") }, + { name: "name", ...getTypeByORM("varchar"), isUnique: true }, + { name: "commissioned", ...getTypeByORM("date"), default: getDefaultByORM("currentDate") }, + { name: "decommissioned", ...getTypeByORM("date", true), default: getDefaultByORM("null") }, + ], +}); + +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: "type", ...getTypeByORM("varchar", true), default: getDefaultByORM("null") }, + { name: "name", ...getTypeByORM("varchar"), isUnique: true }, + { name: "commissioned", ...getTypeByORM("date"), default: getDefaultByORM("currentDate") }, + { name: "decommissioned", ...getTypeByORM("date", true), default: getDefaultByORM("null") }, + ], +}); diff --git a/src/migrations/baseSchemaTables/member.ts b/src/migrations/baseSchemaTables/member.ts deleted file mode 100644 index 7805277..0000000 --- a/src/migrations/baseSchemaTables/member.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Table } from "typeorm"; -import { getTypeByORM, isUUIDPrimary } from "../ormHelper"; - -export const member_table = new Table({ - name: "member", - columns: [ - { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, - { name: "firstname", ...getTypeByORM("varchar") }, - { name: "lastname", ...getTypeByORM("varchar") }, - { name: "nameaffix", ...getTypeByORM("varchar") }, - ], -}); diff --git a/src/migrations/ormHelper.ts b/src/migrations/ormHelper.ts index 20a57ad..80f614a 100644 --- a/src/migrations/ormHelper.ts +++ b/src/migrations/ormHelper.ts @@ -1,5 +1,5 @@ export type ORMType = "int" | "bigint" | "boolean" | "date" | "datetime" | "time" | "text" | "varchar" | "uuid"; -export type ORMDefault = "currentTimestamp" | "string" | "boolean" | "number" | "null"; +export type ORMDefault = "currentTimestamp" | "currentDate" | "string" | "boolean" | "number" | "null"; export type ColumnConfig = { type: string; length?: string; @@ -68,6 +68,7 @@ export function getDefaultByORM(type: ORMDefault, data?: stri const typeMap: Record> = { mysql: { currentTimestamp: `CURRENT_TIMESTAMP(${data ?? 6})`, + currentDate: "CURRENT_DATE", string: `'${data ?? ""}'`, boolean: Boolean(data).toString(), number: Number(data).toString(), @@ -75,6 +76,7 @@ export function getDefaultByORM(type: ORMDefault, data?: stri }, postgres: { currentTimestamp: `now()`, + currentDate: "CURRENT_DATE", string: `'${data ?? ""}'`, boolean: Boolean(data) == true ? "true" : "false", number: Number(data).toString(), @@ -82,6 +84,7 @@ export function getDefaultByORM(type: ORMDefault, data?: stri }, sqlite: { currentTimestamp: `datetime('now')`, + currentDate: "CURRENT_DATE", string: `'${data ?? ""}'`, boolean: Boolean(data) == true ? "1" : "0", number: Number(data).toString(),