diff --git a/src/entity/asset_category.ts b/src/entity/asset_category.ts new file mode 100644 index 0000000..87b8afd --- /dev/null +++ b/src/entity/asset_category.ts @@ -0,0 +1,43 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + OneToMany, +} from 'typeorm'; +import { Goods } from './goods'; + +@Entity('categories') +export class AssetCategory { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ + nullable: false, + length: 128, + }) + name: string; + + @Column({ + nullable: true, + length: 255, + }) + description: string; + + @OneToMany(() => Goods, (goods) => goods.category_id) + goods: Goods[]; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; +} diff --git a/src/entity/goods.ts b/src/entity/goods.ts index 0ff8721..df31510 100644 --- a/src/entity/goods.ts +++ b/src/entity/goods.ts @@ -13,6 +13,7 @@ import { import { Status } from '../types/status'; import { User } from './users'; import { Supplier } from './supplier'; +import { AssetCategory } from './asset_category'; @Entity('goods') export class Goods { @@ -31,6 +32,13 @@ export class Goods { }) description: string; + @Column({ + nullable: false, + length: 64, + unique: true, // Ensure the item code is unique + }) + item_code: string; + @Column({ nullable: false, type: 'decimal', @@ -45,6 +53,10 @@ export class Goods { }) quantity: number; + @ManyToOne(() => AssetCategory, (category) => category.goods, { nullable: true }) + @JoinColumn({ name: 'category_id' }) + category: AssetCategory; + @Column({ nullable: true, type: 'uuid', @@ -62,7 +74,18 @@ export class Goods { }) created_by: string; - @ManyToOne(() => Supplier, { nullable: false }) + @ManyToOne(() => User, (user) => user.id, { nullable: true }) + @JoinColumn({ name: 'updated_by' }) + updatedBy: User; + + @Index() + @Column({ + nullable: true, + type: 'uuid', + }) + updated_by: string; + + @ManyToOne(() => Supplier, { nullable: false }) @JoinColumn({ name: 'supplier_id' }) supplier: Supplier; diff --git a/src/index.ts b/src/index.ts index e4098da..a75161a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -37,6 +37,7 @@ import { SummarizeLog } from "./entity/summarize_log"; import { SummarizeLogStatus, SummarizeType } from "./types/summarize"; import { Goods } from "./entity/goods"; import { Supplier } from "./entity/supplier"; +import { AssetCategory } from "./entity/asset_category"; import { TelegramBody, TelegramResponseSend } from "./types/telegram"; import { Ledger } from "./entity/ledgers"; import { CreditCompany } from "./entity/credit_companies"; @@ -92,6 +93,7 @@ export { SummarizeType, Goods, Supplier, + AssetCategory, Ledger, CreditCompany, CreditDebtor,