diff --git a/src/entity/gps_vehicles.ts b/src/entity/gps_vehicles.ts new file mode 100644 index 0000000..bb13d73 --- /dev/null +++ b/src/entity/gps_vehicles.ts @@ -0,0 +1,184 @@ +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, OneToOne, JoinColumn } from "typeorm"; +import { GpsDevice } from "./gps_devices"; + +export abstract class BaseEntityAudit { + @CreateDateColumn({ name: "created_at" }) + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @UpdateDateColumn({ name: "updated_at", nullable: true }) + updated_at?: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by?: string; + + @DeleteDateColumn({ name: "deleted_at", nullable: true }) + deleted_at?: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by?: string; +} + +@Entity("gps_vehicles", { schema: "gps" }) +export class GpsVehicles extends BaseEntityAudit { + @PrimaryGeneratedColumn("uuid") + vehicle_id: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + name?: string; + + @OneToOne(() => GpsDevice, { nullable: true, onDelete: "SET NULL" }) + @JoinColumn({ name: "device_id", referencedColumnName: "id" }) + device_id?: GpsDevice; + + @Column({ type: "json", nullable: true }) + vehicle_dt?: Record; + + // ============================= + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} + +@Entity("gps_vehicle_types", { schema: "gps" }) +export class GpsVehicleTypes extends BaseEntityAudit { + @PrimaryGeneratedColumn("uuid") + vehicle_type_id: string; + + @Column({ type: "json", nullable: true }) + vehicle_type_dt?: Record; + + // ============================= + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} + +@Entity("gps_vehicle_brands", { schema: "gps" }) +export class GpsVehicleBrands extends BaseEntityAudit { + @PrimaryGeneratedColumn("uuid") + vehicle_brand_id: string; + + @Column({ type: "json", nullable: true }) + vehicle_brand_dt?: Record; + + // ============================= + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} + +@Entity("gps_vehicle_cats", { schema: "gps" }) +export class GpsVehicleCats extends BaseEntityAudit { + @PrimaryGeneratedColumn("uuid") + vehicle_cat_id: string; + + @Column({ type: "json", nullable: true }) + vehicle_cat_dt?: Record; + + // ============================= + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} + +@Entity("gps_vehicle_models", { schema: "gps" }) +export class GpsVehicleModels extends BaseEntityAudit { + @PrimaryGeneratedColumn("uuid") + vehicle_model_id: string; + + @Column({ type: "json", nullable: true }) + vehicle_model_dt?: Record; + + // ============================= + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} diff --git a/src/schema/gps.ts b/src/schema/gps.ts index 930b116..b74de2e 100644 --- a/src/schema/gps.ts +++ b/src/schema/gps.ts @@ -1,3 +1,4 @@ export * from "../types/gps"; export * from "../entity/gps_devices"; export * from "../entity/gps_device_log"; +export * from "../entity/gps_vehicles";