diff --git a/database/migrations/.snapshot-negareh.json b/database/migrations/.snapshot-negareh.json index 29e673a..7d9e532 100644 --- a/database/migrations/.snapshot-negareh.json +++ b/database/migrations/.snapshot-negareh.json @@ -2999,9 +2999,9 @@ }, "order_number": { "name": "order_number", - "type": "serial", - "unsigned": true, - "autoincrement": true, + "type": "int", + "unsigned": false, + "autoincrement": false, "primary": false, "nullable": false, "mappedType": "integer" @@ -3065,6 +3065,16 @@ "primary": false, "unique": true }, + { + "columnNames": [ + "order_number" + ], + "composite": false, + "keyName": "orders_order_number_unique", + "constraint": true, + "primary": false, + "unique": true + }, { "keyName": "orders_user_id_index", "columnNames": [ diff --git a/database/migrations/Migration20260405052112.ts b/database/migrations/Migration20260405052112.ts new file mode 100644 index 0000000..5e76504 --- /dev/null +++ b/database/migrations/Migration20260405052112.ts @@ -0,0 +1,20 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260405052112 extends Migration { + + override async up(): Promise { + this.addSql(`alter table "orders" alter column "order_number" type int using ("order_number"::int);`); + this.addSql(`alter table "orders" alter column "order_number" drop default;`); + this.addSql(`alter table "orders" add constraint "orders_order_number_unique" unique ("order_number");`); + } + + override async down(): Promise { + this.addSql(`alter table "orders" drop constraint "orders_order_number_unique";`); + + this.addSql(`alter table "orders" alter column "order_number" type int using ("order_number"::int);`); + this.addSql(`create sequence if not exists "orders_order_number_seq";`); + this.addSql(`select setval('orders_order_number_seq', (select max("order_number") from "orders"));`); + this.addSql(`alter table "orders" alter column "order_number" set default nextval('orders_order_number_seq');`); + } + +} diff --git a/src/modules/order/entities/order.entity.ts b/src/modules/order/entities/order.entity.ts index 49a4419..0dcaa9d 100644 --- a/src/modules/order/entities/order.entity.ts +++ b/src/modules/order/entities/order.entity.ts @@ -6,7 +6,8 @@ import { Enum, PrimaryKey, OptionalProps, - OneToOne + OneToOne, + Opt } from '@mikro-orm/core'; import { User } from '../../user/entities/user.entity'; import { ulid } from 'ulid'; @@ -21,9 +22,9 @@ import { OrderPrint } from './print.entity'; @Entity({ tableName: 'orders' }) @Index({ properties: ['user'] }) export class Order extends BaseEntity { - [OptionalProps]?: 'createdAt' | 'deletedAt' | 'orderNumber' + [OptionalProps]?: 'createdAt' | 'deletedAt' - @ManyToOne(() => InvoiceItem,{nullable:true}) + @ManyToOne(() => InvoiceItem, { nullable: true }) invoiceItem?: InvoiceItem @ManyToOne(() => Product, { nullable: true }) @@ -37,10 +38,10 @@ export class Order extends BaseEntity { id: string = ulid() @Property({ type: 'string', nullable: true }) - title?: string + title?: string @ManyToOne(() => Category) - type: Category + type: Category @ManyToOne(() => User) user!: User; @@ -53,9 +54,9 @@ export class Order extends BaseEntity { @Property({ type: 'int', - autoincrement: true + unique: true }) - orderNumber: number; + orderNumber: number & Opt; @Enum(() => OrderStatusEnum) @@ -67,5 +68,5 @@ export class Order extends BaseEntity { @Property({ type: 'json' }) attachments: IAttachment[] = [] - + }