Builtin များကို ဦးစားပေးပါ
User၊ branch၊ partner၊ currency၊ tag၊ notification သို့မဟုတ် media အတွက် ဇယားအသစ် မသတ်မှတ်မီ shared-backend-core မှ entity (နှင့် service) ကို import လုပ်ရပါသည်။ Domain-specific data အတွက်သာ ကိုယ်ပိုင် ဇယား ရေးသားရပါသည်။
- @quan-erp/shared-backend-core မှ entity များကို import လုပ်ရပါသည်
- Entity အားလုံးတွင် BaseEntity ကို extend လုပ်ရပါသည်
- ManyToOne + JoinColumn ဖြင့် join လုပ်ရပါသည်; relation type အတွက် InstanceType<typeof EntityName> ကို အသုံးပြုရပါသည်
Domains
- BaseEntity — create/update/soft-delete/version ကော်လံများ
- Identity — UserEntity, RoleEntity, BranchEntity
- Partner — PartnerEntity + shipping addresses
- Currency — CurrencyEntity, CurrencyExchangeRateEnity
- Units — UnitCategoryEntity, UnitEntity, conversions
- Operations — NotifcationEntity, AuditLogEntity, TagEntity
- Config — SettingEntity, EnvEntity, DeveloperConfigEntity
- Plugins — PluginEntity, PluginRouteEntity, DataSeedHistoryEntity
- Files — FileEntity
Plugin entity မှ join
TypeORM relation ဖြင့် core entity များကို ကိုးကားရပါသည်။ Circular import ရှောင်ရန် InstanceType<typeof …> ကို အသုံးပြုရပါသည်။
1import {
2 BaseEntity,
3 BranchEntity,
4 UserEntity,
5} from "@quan-erp/shared-backend-core";
6import {
7 Column,
8 Entity,
9 JoinColumn,
10 ManyToOne,
11 PrimaryGeneratedColumn,
12} from "typeorm";
13import metadata from "../../../../module.metadata.json" with { type: "json" };
14
15@Entity(`${metadata.name}_order`)
16export class OrderEntity extends BaseEntity {
17 @PrimaryGeneratedColumn()
18 id: number;
19
20 @ManyToOne(() => UserEntity)
21 @JoinColumn({ name: "userId" })
22 user: InstanceType<typeof UserEntity>;
23
24 @Column()
25 userId: number;
26
27 @ManyToOne(() => BranchEntity)
28 @JoinColumn({ name: "branchId" })
29 branch: InstanceType<typeof BranchEntity>;
30
31 @Column()
32 branchId: number;
33}သင့် plugin ဇယားများ
Domain ဇယား လိုအပ်ပါက TypeORM entity သတ်မှတ်ရပါသည် (metadata.name prefix၊ BaseEntity extend)၊ module တွင် plugin: "default" ဖြင့် မှတ်ပုံတင်ပြီး၊ migration ဖြင့် schema ပြောင်းရပါသည်။ Database နှင့် Migrations စာမျက်နှာများကို ကြည့်ပါ။