fix order number

This commit is contained in:
2026-05-18 16:51:55 +03:30
parent 2b064065e0
commit 34c50978e4
3 changed files with 21 additions and 4 deletions
@@ -0,0 +1,16 @@
import { Migration } from '@mikro-orm/migrations';
export class Migration20260518133000 extends Migration {
override async up(): Promise<void> {
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<void> {
this.addSql(`alter table "orders" alter column "order_number" drop default;`);
this.addSql(`drop sequence if exists "orders_order_number_seq";`);
}
}
+3 -2
View File
@@ -24,7 +24,7 @@ import { OrderPrint } from './print.entity';
@Index({ properties: ['designer'] }) @Index({ properties: ['designer'] })
@Index({ properties: ['status'] }) @Index({ properties: ['status'] })
export class Order extends BaseEntity { export class Order extends BaseEntity {
[OptionalProps]?: 'createdAt' | 'deletedAt' [OptionalProps]?: 'createdAt' | 'deletedAt' | 'orderNumber'
@ManyToOne(() => InvoiceItem, { nullable: true }) @ManyToOne(() => InvoiceItem, { nullable: true })
invoiceItem?: InvoiceItem invoiceItem?: InvoiceItem
@@ -56,7 +56,8 @@ export class Order extends BaseEntity {
@Property({ @Property({
type: 'int', type: 'int',
unique: true unique: true,
autoincrement: true,
}) })
orderNumber: number & Opt; orderNumber: number & Opt;
@@ -74,7 +74,7 @@ export class OrderRepository extends EntityRepository<Order> {
} }
} }
// Search by order number or user information // Search by order number or user information
if (search) { if (search) {
const searchPattern = `%${search}%`; const searchPattern = `%${search}%`;
@@ -98,7 +98,7 @@ export class OrderRepository extends EntityRepository<Order> {
limit, limit,
offset, offset,
orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' },
populate: ['user','product'], populate: ['user', 'product', 'designer'],
}); });
// Collect all (orderId, productId) pairs for efficient review lookup // Collect all (orderId, productId) pairs for efficient review lookup