From 34c50978e4b18ef386b1a65a0993df011cf84e3b Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Mon, 18 May 2026 16:51:55 +0330 Subject: [PATCH] fix order number --- database/migrations/Migration20260518133000.ts | 16 ++++++++++++++++ src/modules/order/entities/order.entity.ts | 5 +++-- .../order/repositories/order.repository.ts | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 database/migrations/Migration20260518133000.ts diff --git a/database/migrations/Migration20260518133000.ts b/database/migrations/Migration20260518133000.ts new file mode 100644 index 0000000..7015a9b --- /dev/null +++ b/database/migrations/Migration20260518133000.ts @@ -0,0 +1,16 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260518133000 extends Migration { + + override async up(): Promise { + this.addSql(`create sequence if not exists "orders_order_number_seq";`); + this.addSql(`select setval('orders_order_number_seq', coalesce((select max("order_number") from "orders"), 1), (select count(*) > 0 from "orders"));`); + this.addSql(`alter table "orders" alter column "order_number" set default nextval('orders_order_number_seq');`); + } + + override async down(): Promise { + this.addSql(`alter table "orders" alter column "order_number" drop default;`); + this.addSql(`drop sequence if exists "orders_order_number_seq";`); + } + +} diff --git a/src/modules/order/entities/order.entity.ts b/src/modules/order/entities/order.entity.ts index 787ad78..db2e140 100644 --- a/src/modules/order/entities/order.entity.ts +++ b/src/modules/order/entities/order.entity.ts @@ -24,7 +24,7 @@ import { OrderPrint } from './print.entity'; @Index({ properties: ['designer'] }) @Index({ properties: ['status'] }) export class Order extends BaseEntity { - [OptionalProps]?: 'createdAt' | 'deletedAt' + [OptionalProps]?: 'createdAt' | 'deletedAt' | 'orderNumber' @ManyToOne(() => InvoiceItem, { nullable: true }) invoiceItem?: InvoiceItem @@ -56,7 +56,8 @@ export class Order extends BaseEntity { @Property({ type: 'int', - unique: true + unique: true, + autoincrement: true, }) orderNumber: number & Opt; diff --git a/src/modules/order/repositories/order.repository.ts b/src/modules/order/repositories/order.repository.ts index 55e9207..aaf9389 100644 --- a/src/modules/order/repositories/order.repository.ts +++ b/src/modules/order/repositories/order.repository.ts @@ -74,7 +74,7 @@ export class OrderRepository extends EntityRepository { } } - + // Search by order number or user information if (search) { const searchPattern = `%${search}%`; @@ -98,7 +98,7 @@ export class OrderRepository extends EntityRepository { limit, offset, orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, - populate: ['user','product'], + populate: ['user', 'product', 'designer'], }); // Collect all (orderId, productId) pairs for efficient review lookup