base data schema

This commit is contained in:
Julian Krauser 2025-02-17 13:14:16 +01:00
parent 1d56c7f798
commit cfec116f2c
7 changed files with 102 additions and 15 deletions

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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<void> {
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);

View file

@ -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") },
],
});

View file

@ -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") },
],
});

View file

@ -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<T = string | null>(type: ORMDefault, data?: stri
const typeMap: Record<string, Record<ORMDefault, string | null>> = {
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<T = string | null>(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<T = string | null>(type: ORMDefault, data?: stri
},
sqlite: {
currentTimestamp: `datetime('now')`,
currentDate: "CURRENT_DATE",
string: `'${data ?? ""}'`,
boolean: Boolean(data) == true ? "1" : "0",
number: Number(data).toString(),