diff --git a/database/migrations/.snapshot-negareh.json b/database/migrations/.snapshot-negareh.json index c44f72f..60fc459 100644 --- a/database/migrations/.snapshot-negareh.json +++ b/database/migrations/.snapshot-negareh.json @@ -345,68 +345,6 @@ }, "nativeEnums": {} }, - { - "columns": { - "id": { - "name": "id", - "type": "char(26)", - "unsigned": false, - "autoincrement": false, - "primary": false, - "nullable": false, - "length": 26, - "mappedType": "character" - }, - "created_at": { - "name": "created_at", - "type": "timestamptz", - "unsigned": false, - "autoincrement": false, - "primary": false, - "nullable": false, - "length": 6, - "default": "now()", - "mappedType": "datetime" - }, - "deleted_at": { - "name": "deleted_at", - "type": "timestamptz", - "unsigned": false, - "autoincrement": false, - "primary": false, - "nullable": true, - "length": 6, - "mappedType": "datetime" - }, - "title": { - "name": "title", - "type": "varchar(255)", - "unsigned": false, - "autoincrement": false, - "primary": false, - "nullable": false, - "length": 255, - "mappedType": "string" - } - }, - "name": "order_types", - "schema": "public", - "indexes": [ - { - "keyName": "order_types_pkey", - "columnNames": [ - "id" - ], - "composite": false, - "constraint": true, - "primary": true, - "unique": true - } - ], - "checks": [], - "foreignKeys": {}, - "nativeEnums": {} - }, { "columns": { "phone": { @@ -2723,6 +2661,26 @@ "primary": false, "nullable": false, "mappedType": "json" + }, + "printery": { + "name": "printery", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "lithography": { + "name": "lithography", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" } }, "name": "orders", @@ -2786,7 +2744,7 @@ "referencedColumnNames": [ "id" ], - "referencedTableName": "public.order_types", + "referencedTableName": "public.categories", "updateRule": "cascade" }, "orders_user_id_foreign": { diff --git a/database/migrations/Migration20260221130421.ts b/database/migrations/Migration20260221130421.ts new file mode 100644 index 0000000..309eb75 --- /dev/null +++ b/database/migrations/Migration20260221130421.ts @@ -0,0 +1,20 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260221130421 extends Migration { + + override async up(): Promise { + this.addSql(`alter table "orders" drop constraint "orders_type_id_foreign";`); + + this.addSql(`alter table "orders" add column "printery" varchar(255) null, add column "lithography" varchar(255) null;`); + this.addSql(`alter table "orders" add constraint "orders_type_id_foreign" foreign key ("type_id") references "categories" ("id") on update cascade;`); + } + + override async down(): Promise { + this.addSql(`create table "order_types" ("id" char(26) not null, "created_at" timestamptz not null default now(), "deleted_at" timestamptz null, "title" varchar(255) not null, constraint "order_types_pkey" primary key ("id"));`); + + this.addSql(`alter table "orders" drop constraint "orders_type_id_foreign";`); + + this.addSql(`alter table "orders" add constraint "orders_type_id_foreign" foreign key ("type_id") references "order_types" ("id") on update cascade;`); + } + +} diff --git a/src/app.module.ts b/src/app.module.ts index c61767d..9c79077 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -19,6 +19,7 @@ import { PrintModule } from './modules/print/print.module'; import { FormBuilderModule } from './modules/form-builder/form-builder.module'; import { RequestModule } from './modules/request/request.module'; import { InvoiceModule } from './modules/invoice/invoice.module'; +import { OrderModule } from './modules/order/order.module'; @Module({ imports: [ @@ -46,6 +47,7 @@ import { InvoiceModule } from './modules/invoice/invoice.module'; FormBuilderModule, RequestModule, InvoiceModule, + OrderModule ], controllers: [], providers: [], diff --git a/src/modules/order/entities/order-type.entity.ts b/src/modules/order/entities/order-type.entity.ts deleted file mode 100644 index 29af041..0000000 --- a/src/modules/order/entities/order-type.entity.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { - Entity, - Property, - OptionalProps, -} from '@mikro-orm/core'; -import { BaseEntity } from 'src/common/entities/base.entity'; - -@Entity({ tableName: 'order_types' }) -export class OrderType extends BaseEntity { - [OptionalProps]?: 'createdAt' | 'deletedAt' - - @Property({ type: 'string' }) - title: string - -} diff --git a/src/modules/order/entities/order.entity.ts b/src/modules/order/entities/order.entity.ts index 1373214..29f3ae0 100644 --- a/src/modules/order/entities/order.entity.ts +++ b/src/modules/order/entities/order.entity.ts @@ -15,7 +15,7 @@ import { IAttachment, OrderStatusEnum } from '../interface/order.interface'; import { InvoiceItem } from 'src/modules/invoice/entities/invoice-item.entity'; import { IField } from 'src/modules/request/interface/request.interface'; import { Product } from 'src/modules/product/entities/product.entity'; -import { OrderType } from './order-type.entity'; +import { Category } from 'src/modules/product/entities/category.entity'; @Entity({ tableName: 'orders' }) @Index({ properties: ['user'] }) @@ -34,8 +34,8 @@ export class Order extends BaseEntity { @Property({ type: 'string', nullable: true }) title?: string - @ManyToOne(() => OrderType) - type: OrderType + @ManyToOne(() => Category) + type: Category @ManyToOne(() => User) user!: User; diff --git a/src/modules/order/order.module.ts b/src/modules/order/order.module.ts index c35b94f..ddb799f 100644 --- a/src/modules/order/order.module.ts +++ b/src/modules/order/order.module.ts @@ -15,11 +15,10 @@ import { UserModule } from '../user/user.module'; import { UtilsModule } from '../util/utils.module'; import { ProductModule } from '../product/product.module'; import { TicketModule } from '../ticket/ticket.module'; -import { OrderType } from './entities/order-type.entity'; @Module({ imports: [ - MikroOrmModule.forFeature([Order, OrderType]), + MikroOrmModule.forFeature([Order]), AuthModule, forwardRef(() => PaymentModule), JwtModule, diff --git a/src/modules/order/providers/order.service.ts b/src/modules/order/providers/order.service.ts index 6aa7aa9..c0cd079 100644 --- a/src/modules/order/providers/order.service.ts +++ b/src/modules/order/providers/order.service.ts @@ -3,10 +3,7 @@ import { EntityManager } from '@mikro-orm/postgresql'; import { OrderRepository } from '../repositories/order.repository'; import { FindOrdersDto } from '../dto/find-orders.dto'; import { EventEmitter2 } from '@nestjs/event-emitter'; -import { - CreateOrderAsAdminDto, - CreateOrderItemDtoAsAdmin, -} from '../dto/create-order.dto'; +import { CreateOrderAsAdminDto } from '../dto/create-order.dto'; import { UserService } from 'src/modules/user/providers/user.service'; import { OrderStatusEnum } from '../interface/order.interface'; import { ProductService } from 'src/modules/product/providers/product.service'; @@ -18,16 +15,15 @@ import { Order } from '../entities/order.entity'; import { PaymentRepository } from 'src/modules/payment/repositories/payment.repository'; import { AdminService } from 'src/modules/admin/providers/admin.service'; import { UpdateOrderAsAdminDto } from '../dto/update-order.dto'; -import { FindOrderItemsDto } from '../dto/find-order-items.dto'; import { PermissionService } from 'src/modules/roles/providers/permissions.service'; import { PermissionEnum } from 'src/common/enums/permission.enum'; import { User } from 'src/modules/user/entities/user.entity'; -import { OrderType } from '../entities/order-type.entity'; import { Product } from 'src/modules/product/entities/product.entity'; import { InvoiceItem } from 'src/modules/invoice/entities/invoice-item.entity'; import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; import { UpdateStatusAsDesignerDto } from '../dto/update-status-as-designer.dto'; import { UpdateStatusDto } from '../dto/update-status.dto'; +import { Category } from 'src/modules/product/entities/category.entity'; @Injectable() export class OrderService { @@ -79,7 +75,7 @@ export class OrderService { const creator = await this.adminService.findOrFail(adminId); - const type = await this.em.findOne(OrderType, { id: dto.typeId }); + const type = await this.em.findOne(Category, { id: dto.typeId }); if (!type) { throw new NotFoundException(`Order type with ID ${dto.typeId} not found.`); } @@ -157,7 +153,7 @@ export class OrderService { order.user = user as User; } if (dto.typeId !== undefined) { - const type = await this.em.findOne(OrderType, { id: dto.typeId }); + const type = await this.em.findOne(Category, { id: dto.typeId }); if (!type) { throw new NotFoundException(`Order type with ID ${dto.typeId} not found.`); }