This commit is contained in:
2025-10-14 10:36:28 +07:00
7 changed files with 327 additions and 45 deletions

View File

@ -1,63 +1,75 @@
import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
import { BrilinkDiscountModule, BrilinkDiscountStatus, BrilinkDiscountType } from '../types/brilink'; import { BrilinkDiscountModule, BrilinkDiscountStatus, BrilinkDiscountType } from "../types/brilink";
import { BrilinkMerchant } from './brilink_merchants'; import { BrilinkMerchant } from "./brilink_merchants";
@Entity('brilink_discounts', { schema: 'brilinks' }) @Entity("brilink_discounts", { schema: "brilinks" })
export class BrilinkDiscount { export class BrilinkDiscount {
@PrimaryGeneratedColumn('uuid') @PrimaryGeneratedColumn("uuid")
id: string; id: string;
@ManyToOne(() => BrilinkMerchant, { onDelete: 'RESTRICT' }) @ManyToOne(() => BrilinkMerchant, { onDelete: "RESTRICT" })
@JoinTable() @JoinTable()
merchant: BrilinkMerchant merchant: BrilinkMerchant;
@Column({ type: "varchar", length: 255 }) @Column({ type: "varchar", length: 255 })
module: BrilinkDiscountModule; module: BrilinkDiscountModule;
@Column({ type: "varchar", length: 255, unique: true }) @Column({ type: "varchar", length: 255, unique: true })
code: string; code: string;
@Column({ type: "varchar", length: 255 }) @Column({ type: "varchar", length: 255 })
name: string; name: string;
@Column({ type: "varchar", length: 255 }) @Column({
type: BrilinkDiscountType; type: "float8",
nullable: true,
})
min_trans_amount: number;
@Column({ @Column({
type: 'float8', type: "float8",
nullable: false, nullable: true,
default: 0 })
}) max_trans_amount: number;
amount: number;
@Column({ nullable: false }) @Column({ type: "varchar", length: 255 })
start_date: Date; type: BrilinkDiscountType;
@Column({ nullable: false }) @Column({
end_date: Date; type: "float8",
nullable: false,
default: 0,
})
amount: number;
@Column({ type: "varchar", length: 10 }) @Column({ nullable: false })
status: BrilinkDiscountStatus; start_date: Date;
@Column() @Column({ nullable: false })
@CreateDateColumn() end_date: Date;
created_at: Date;
@Column({ type: "varchar", length: 255 }) @Column({ type: "varchar", length: 10 })
created_by: string; status: BrilinkDiscountStatus;
@Column({ nullable: true }) @Column()
@UpdateDateColumn() @CreateDateColumn()
updated_at: Date; created_at: Date;
@Column({ type: "varchar", length: 255, nullable: true }) @Column({ type: "varchar", length: 255 })
updated_by: string; created_by: string;
@Column({ nullable: true }) @Column({ nullable: true })
@DeleteDateColumn() @UpdateDateColumn()
deleted_at: Date; updated_at: Date;
@Column({ type: "varchar", length: 255, nullable: true }) @Column({ type: "varchar", length: 255, nullable: true })
deleted_by: string; updated_by: string;
}
@Column({ nullable: true })
@DeleteDateColumn()
deleted_at: Date;
@Column({ type: "varchar", length: 255, nullable: true })
deleted_by: string;
}

184
src/entity/gps_vehicles.ts Normal file
View File

@ -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<string, any>;
// =============================
@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<string, any>;
// =============================
@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<string, any>;
// =============================
@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<string, any>;
// =============================
@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<string, any>;
// =============================
@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;
}

View File

@ -0,0 +1,54 @@
import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
import { Application } from "./application";
@Entity("telemor_logs", { schema: "telemor" })
export class TelemorLogs {
@PrimaryGeneratedColumn("uuid")
id: string;
@ManyToOne(() => Application, { onDelete: "NO ACTION" })
@JoinColumn({ name: "application" })
application: Application;
@Column({
length: 256,
})
url: string;
@Column({
type: "jsonb",
})
header: string;
@Column({
type: "jsonb",
})
body: string;
@Column()
request_at: Date;
@Column({
length: 4096,
})
response: string;
@Column({
length: 128,
nullable: true,
})
supplier_reference_code: string;
@Column({
length: 128,
nullable: true,
})
supplier_transaction_code: string;
@Column()
response_at: Date;
@Column()
@CreateDateColumn()
created_at: Date;
}

View File

@ -0,0 +1,28 @@
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
@Entity("telemor_mosan_remit_configs", { schema: "telemor" })
export class TelemorMosanRemitConfig {
@PrimaryGeneratedColumn("uuid")
id: string;
@Column({
length: 4096,
})
key: string;
@Column({
length: 4096,
})
value: string;
@Column()
@CreateDateColumn()
created_at: Date;
@Column({ nullable: true })
@UpdateDateColumn()
updated_at: Date;
@Column({ nullable: true })
expired_at: Date;
}

View File

@ -12,3 +12,4 @@ export * from "./schema/eform";
export * from "./schema/compliance"; export * from "./schema/compliance";
export * from "./schema/trx"; export * from "./schema/trx";
export * from "./schema/gps"; export * from "./schema/gps";
export * from "./schema/telemor";

View File

@ -1,3 +1,4 @@
export * from "../types/gps"; export * from "../types/gps";
export * from "../entity/gps_devices"; export * from "../entity/gps_devices";
export * from "../entity/gps_device_log"; export * from "../entity/gps_device_log";
export * from "../entity/gps_vehicles";

2
src/schema/telemor.ts Normal file
View File

@ -0,0 +1,2 @@
export * from "../entity/telemor_mosan_remit_configs";
export * from "../entity/telemor_logs";