From 3e26bc8180374912a4bcba3913491c8533556909 Mon Sep 17 00:00:00 2001 From: fro1991 Date: Fri, 18 Jul 2025 03:07:55 +0700 Subject: [PATCH] update --- src/entity/brilink_membership_card_history.ts | 103 ++++++++++++++++++ src/entity/brilink_membership_cards.ts | 70 ++++++------ src/index.ts | 8 ++ src/types/brilink.ts | 20 ++++ 4 files changed, 170 insertions(+), 31 deletions(-) create mode 100644 src/entity/brilink_membership_card_history.ts diff --git a/src/entity/brilink_membership_card_history.ts b/src/entity/brilink_membership_card_history.ts new file mode 100644 index 0000000..19aec5c --- /dev/null +++ b/src/entity/brilink_membership_card_history.ts @@ -0,0 +1,103 @@ +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; + +import { BrizziHistoryActvity, BrizziHistoryRemarks, BrizziHistoryType } from "../types/brizzi"; +import { BrilinkTerminal } from "./brilink_terminals"; +import { BrizziCard } from "./brizzi_cards"; +import { BrilinkMerchant } from "./brilink_merchants"; +import { BrilinkMerchantTerminal } from "./brilink_merchant_terminals"; +import { BrilinkMembershipCardHistoryActvity, BrilinkMembershipCardRemarks } from "../types/brilink"; +import { BrilinkMembership } from "./brilink_memberships"; + +@Entity("brilink_membership_card_histories", { schema: "brilinks" }) +export class BrilinkMembershipCardHistory { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ + nullable: false, + length: 64, + unique: true, + }) + code: string; + + @ManyToOne(() => BrizziCard, { onDelete: "NO ACTION" }) + @JoinTable() + card: BrizziCard; + + @Column({ + nullable: false, + length: 64, + }) + activity: BrilinkMembershipCardHistoryActvity; + + @Column({ nullable: true }) + activity_at: Date; + + @ManyToOne(() => BrilinkMembership, { onDelete: "NO ACTION" }) + @JoinTable() + membership: BrilinkMembership; + + @ManyToOne(() => BrilinkMerchant, { onDelete: "NO ACTION", nullable: true }) + @JoinTable() + merchant: BrilinkMerchant; + + @ManyToOne(() => BrilinkMerchantTerminal, { onDelete: "NO ACTION", nullable: true }) + @JoinTable() + merchant_terminal: BrilinkMerchantTerminal; + + @ManyToOne(() => BrilinkTerminal, { onDelete: "NO ACTION", nullable: true }) + @JoinTable() + terminal: BrilinkTerminal; + + @Column({ nullable: true }) + prev_expired: Date; + + @Column({ nullable: true }) + next_expired: Date; + + @Column({ + nullable: false, + length: 64, + default: "unverified", + }) + remarks: BrilinkMembershipCardRemarks; + + @Column({ + nullable: true, + length: 128, + }) + description: string; + + @Column({ + nullable: true, + length: 64, + }) + payload: string; + + @Column({ + type: "jsonb", + nullable: true, + }) + payload_json: 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/entity/brilink_membership_cards.ts b/src/entity/brilink_membership_cards.ts index 37f0129..08a6e53 100644 --- a/src/entity/brilink_membership_cards.ts +++ b/src/entity/brilink_membership_cards.ts @@ -1,43 +1,51 @@ -import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; -import { BrilinkMerchant } from './brilink_merchants'; -import { BrizziCard } from './brizzi_cards'; -import { BrilinkMembership } from './brilink_memberships'; +import { BrilinkMerchant } from "./brilink_merchants"; +import { BrizziCard } from "./brizzi_cards"; +import { BrilinkMembership } from "./brilink_memberships"; +import { BrilinkMembershipCardStatus } from "../types/brilink"; -@Entity('brilink_membership_cards', { schema: 'brilinks' }) +@Entity("brilink_membership_cards", { schema: "brilinks" }) export class BrilinkMembershipCard { - @PrimaryGeneratedColumn('uuid') - id: string; + @PrimaryGeneratedColumn("uuid") + id: string; - @ManyToOne(() => BrilinkMembership, { onDelete: 'RESTRICT' }) - @JoinTable() - membership: BrilinkMembership + @ManyToOne(() => BrilinkMembership, { onDelete: "RESTRICT" }) + @JoinTable() + membership: BrilinkMembership; - @ManyToOne(() => BrizziCard, { onDelete: 'RESTRICT' }) - @JoinTable() - card: BrizziCard + @ManyToOne(() => BrizziCard, { onDelete: "RESTRICT" }) + @JoinTable() + card: BrizziCard; - @Column({ nullable: true }) - expired_at: Date; + @Column({ nullable: true }) + expired_at: Date; - @Column() - @CreateDateColumn() - created_at: Date; + @Column({ + nullable: false, + length: 64, + default: "inactive", + }) + status: BrilinkMembershipCardStatus; - @Column({ type: "varchar", length: 255 }) - created_by: string; + @Column() + @CreateDateColumn() + created_at: Date; - @Column({ nullable: true }) - @UpdateDateColumn() - updated_at: Date; + @Column({ type: "varchar", length: 255 }) + created_by: string; - @Column({ type: "varchar", length: 255, nullable: true }) - updated_by: string; + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; - @Column({ nullable: true }) - @DeleteDateColumn() - deleted_at: Date; + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; - @Column({ type: "varchar", length: 255, nullable: true }) - deleted_by: string; -} \ No newline at end of file + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} diff --git a/src/index.ts b/src/index.ts index 40ad51b..431d269 100644 --- a/src/index.ts +++ b/src/index.ts @@ -173,6 +173,9 @@ import { BrilinkDiscountStatus, BrilinkDiscountType, BrilinkProductCategorySupplier, + BrilinkMembershipCardStatus, + BrilinkMembershipCardHistoryActvity, + BrilinkMembershipCardRemarks, } from "./types/brilink"; import { BrilinkMerchant } from "./entity/brilink_merchants"; @@ -200,6 +203,7 @@ import { BrilinkProductType } from "./entity/brilink_product_types"; import { BrilinkProductItem } from "./entity/brilink_product_items"; import { BrilinkMerchantProductItem } from "./entity/brilink_merchant_product_items"; import { BrilinkTransactionLog } from "./entity/brilink_transaction_logs"; +import { BrilinkMembershipCardHistory } from "./entity/brilink_membership_card_history"; import { BriapiConfig } from "./entity/briapi_configs"; import { BriapiLog } from "./entity/briapi_logs"; @@ -364,6 +368,10 @@ export { BrilinkProductItem, BrilinkMerchantProductItem, BrilinkTransactionLog, + BrilinkMembershipCardStatus, + BrilinkMembershipCardHistoryActvity, + BrilinkMembershipCardRemarks, + BrilinkMembershipCardHistory, BriapiConfig, BriapiLog, BriapiAppendixBank, diff --git a/src/types/brilink.ts b/src/types/brilink.ts index c5c5222..77ab324 100644 --- a/src/types/brilink.ts +++ b/src/types/brilink.ts @@ -142,3 +142,23 @@ export enum BrilinkDiscountModule { export enum BrilinkProductCategorySupplier { "tcel" = "tcel", } + +export enum BrilinkMembershipCardStatus { + "available" = "available", + "active" = "active", + "inactive" = "inactive", + "expired" = "expired", +} + +export enum BrilinkMembershipCardHistoryActvity { + "activation" = "activation", + "validation" = "validation", + "extend" = "extend", + "deactivation" = "deactivation", +} + +export enum BrilinkMembershipCardRemarks { + "unverified" = "unverified", + "verified" = "verified", + "suspicious" = "suspicious", +}