From 36d231eb0dd91cb74aec4984ef761dd6666407ef Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Thu, 9 Apr 2026 09:31:20 +0330 Subject: [PATCH] add index to tables --- src/modules/admin/entities/admin.entity.ts | 3 ++- src/modules/chat/entities/ticket.entity.ts | 3 ++- src/modules/form-builder/entities/field-option.entity.ts | 3 ++- src/modules/form-builder/entities/field.entity.ts | 5 +++-- src/modules/invoice/entities/invoice-item.entity.ts | 3 ++- src/modules/notification/entities/notification.entity.ts | 3 ++- src/modules/order/entities/order.entity.ts | 2 ++ src/modules/request/entities/request-item.entity.ts | 5 +++-- src/modules/roles/entities/permission.entity.ts | 4 ++-- src/modules/roles/entities/rolePermission.entity.ts | 3 ++- src/modules/ticket/entities/ticket.entity.ts | 3 ++- src/modules/user/entities/user.entity.ts | 1 + 12 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/modules/admin/entities/admin.entity.ts b/src/modules/admin/entities/admin.entity.ts index dd91e1e..e9d69b2 100644 --- a/src/modules/admin/entities/admin.entity.ts +++ b/src/modules/admin/entities/admin.entity.ts @@ -1,8 +1,9 @@ -import { Cascade, Entity, ManyToOne, OptionalProps, Property } from '@mikro-orm/core'; +import { Cascade, Entity, ManyToOne, OptionalProps, Property, Index } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { Role } from 'src/modules/roles/entities/role.entity'; @Entity({ tableName: 'admins' }) +@Index({ properties: ['phone'] }) export class Admin extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' diff --git a/src/modules/chat/entities/ticket.entity.ts b/src/modules/chat/entities/ticket.entity.ts index 7bb6bdf..7c9b42a 100755 --- a/src/modules/chat/entities/ticket.entity.ts +++ b/src/modules/chat/entities/ticket.entity.ts @@ -3,6 +3,7 @@ import { ManyToOne, Property, OptionalProps, + Index, } from '@mikro-orm/core'; import { User } from "../../user/entities/user.entity"; import { Admin } from 'src/modules/admin/entities/admin.entity'; @@ -10,10 +11,10 @@ import { AttachmentType } from '../interfaces/chat'; import { BaseEntity } from 'src/common/entities/base.entity'; @Entity() +@Index({ properties: ['user'] }) export class Chat extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' - @Property({ type: 'text' }) content: string; diff --git a/src/modules/form-builder/entities/field-option.entity.ts b/src/modules/form-builder/entities/field-option.entity.ts index ac43823..c90b1ca 100644 --- a/src/modules/form-builder/entities/field-option.entity.ts +++ b/src/modules/form-builder/entities/field-option.entity.ts @@ -1,8 +1,9 @@ -import { Entity, Property, ManyToOne, PrimaryKey, Unique, OptionalProps } from '@mikro-orm/core'; +import { Entity, Property, ManyToOne, PrimaryKey, Unique, OptionalProps, Index } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { Field } from './field.entity'; @Entity({ tableName: 'field_option' }) +@Index({ properties: ['field'] }) export class FieldOption extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' diff --git a/src/modules/form-builder/entities/field.entity.ts b/src/modules/form-builder/entities/field.entity.ts index 9fc8452..77e461d 100644 --- a/src/modules/form-builder/entities/field.entity.ts +++ b/src/modules/form-builder/entities/field.entity.ts @@ -1,10 +1,11 @@ -import { Collection, Entity, Enum, ManyToOne, OneToMany, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core'; +import { Collection, Entity, Enum, Index, ManyToOne, OneToMany, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core'; import { FieldOption } from './field-option.entity'; import { EntityType, FieldType } from '../interface/print'; import { BaseEntity } from 'src/common/entities/base.entity'; @Entity({ tableName: 'field' }) +@Index({ properties: ['entityId'] }) export class Field extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' @@ -16,7 +17,7 @@ export class Field extends BaseEntity { entityType: EntityType; // Foreign key based on entityType - @Property({ type: 'string',columnType:'char(26)' }) + @Property({ type: 'string', columnType: 'char(26)' }) entityId: string; @Property() diff --git a/src/modules/invoice/entities/invoice-item.entity.ts b/src/modules/invoice/entities/invoice-item.entity.ts index a9cec54..4a7ba0d 100644 --- a/src/modules/invoice/entities/invoice-item.entity.ts +++ b/src/modules/invoice/entities/invoice-item.entity.ts @@ -1,4 +1,4 @@ -import { Collection, Entity, ManyToOne, OptionalProps, Property, OneToMany, Opt } from '@mikro-orm/core'; +import { Collection, Entity, ManyToOne, OptionalProps, Property, OneToMany, Opt, Index } from '@mikro-orm/core'; import { Product } from 'src/modules/product/entities/product.entity'; import { BaseEntity } from 'src/common/entities/base.entity'; import { Invoice } from './invoice.entity'; @@ -6,6 +6,7 @@ import { Order } from 'src/modules/order/entities/order.entity'; @Entity({ tableName: 'invoice_items' }) +@Index({ properties: ['invoice'] }) export class InvoiceItem extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' | 'discount' | 'description' | 'confirmedAt'; diff --git a/src/modules/notification/entities/notification.entity.ts b/src/modules/notification/entities/notification.entity.ts index aa607cf..16c9836 100644 --- a/src/modules/notification/entities/notification.entity.ts +++ b/src/modules/notification/entities/notification.entity.ts @@ -1,10 +1,11 @@ -import { Entity, Property, ManyToOne, Enum, PrimaryKey, OptionalProps } from '@mikro-orm/core'; +import { Entity, Property, ManyToOne, Enum, Index, OptionalProps } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { User } from '../../user/entities/user.entity'; import { NotifTitle } from '../interfaces/notification.interface'; import { Admin } from 'src/modules/admin/entities/admin.entity'; @Entity({ tableName: 'notifications' }) +@Index({ properties: ['user'] }) export class Notification extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' diff --git a/src/modules/order/entities/order.entity.ts b/src/modules/order/entities/order.entity.ts index 0dcaa9d..787ad78 100644 --- a/src/modules/order/entities/order.entity.ts +++ b/src/modules/order/entities/order.entity.ts @@ -21,6 +21,8 @@ import { OrderPrint } from './print.entity'; @Entity({ tableName: 'orders' }) @Index({ properties: ['user'] }) +@Index({ properties: ['designer'] }) +@Index({ properties: ['status'] }) export class Order extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' diff --git a/src/modules/request/entities/request-item.entity.ts b/src/modules/request/entities/request-item.entity.ts index 504f882..6440481 100644 --- a/src/modules/request/entities/request-item.entity.ts +++ b/src/modules/request/entities/request-item.entity.ts @@ -1,10 +1,11 @@ -import { Entity, ManyToOne, OptionalProps, Property } from '@mikro-orm/core'; +import { Entity, Index, ManyToOne, OptionalProps, Property } from '@mikro-orm/core'; import { Product } from 'src/modules/product/entities/product.entity'; import { BaseEntity } from 'src/common/entities/base.entity'; import { Request } from './request.entity'; import { IAttachment, IField } from '../interface/request.interface'; - + @Entity({ tableName: 'request_items' }) +@Index({ properties: ['request'] }) export class RequestItem extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt'; diff --git a/src/modules/roles/entities/permission.entity.ts b/src/modules/roles/entities/permission.entity.ts index b66bcb8..9fd899f 100755 --- a/src/modules/roles/entities/permission.entity.ts +++ b/src/modules/roles/entities/permission.entity.ts @@ -1,4 +1,4 @@ -import { Entity, Property, Unique, ManyToMany, Collection, PrimaryKey, Enum, OptionalProps } from '@mikro-orm/core'; +import { Entity, Property, Unique, ManyToMany, Collection, PrimaryKey, Enum, OptionalProps, Index } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { Role } from './role.entity'; import { PermissionEnum } from 'src/common/enums/permission.enum'; @@ -6,7 +6,7 @@ import { PermissionEnum } from 'src/common/enums/permission.enum'; @Entity({ tableName: 'permissions' }) export class Permission extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' - + @Enum(() => PermissionEnum) name!: PermissionEnum; diff --git a/src/modules/roles/entities/rolePermission.entity.ts b/src/modules/roles/entities/rolePermission.entity.ts index 8bb57c1..f2d00fb 100644 --- a/src/modules/roles/entities/rolePermission.entity.ts +++ b/src/modules/roles/entities/rolePermission.entity.ts @@ -1,8 +1,9 @@ -import { Entity, ManyToOne } from '@mikro-orm/core'; +import { Entity, Index, ManyToOne } from '@mikro-orm/core'; import { Role } from './role.entity'; import { Permission } from './permission.entity'; @Entity({ tableName: 'role_permissions' }) +@Index({ properties: ['role'] }) export class RolePermission { // دو ManyToOne دقیقاً؛ هر کدام می‌تونن primary: true باشند برای composite PK @ManyToOne(() => Role, { primary: true }) diff --git a/src/modules/ticket/entities/ticket.entity.ts b/src/modules/ticket/entities/ticket.entity.ts index bc0ffd1..e26dcbd 100644 --- a/src/modules/ticket/entities/ticket.entity.ts +++ b/src/modules/ticket/entities/ticket.entity.ts @@ -1,4 +1,4 @@ -import { Collection, Entity, Enum, ManyToOne, OneToMany, OptionalProps, Property } from '@mikro-orm/core'; +import { Collection, Entity, Enum, Index, ManyToOne, OneToMany, OptionalProps, Property } from '@mikro-orm/core'; import { BaseEntity } from 'src/common/entities/base.entity'; import { TicketStatusEnum } from '../enum/status.enum'; import { IAttachment } from 'src/modules/order/interface/order.interface'; @@ -6,6 +6,7 @@ import { Admin } from 'src/modules/admin/entities/admin.entity'; import { User } from 'src/modules/user/entities/user.entity'; @Entity({ tableName: 'tickets' }) +@Index({ properties: ['user'] }) export class Ticket extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt' diff --git a/src/modules/user/entities/user.entity.ts b/src/modules/user/entities/user.entity.ts index beeb2c4..3fbff3e 100644 --- a/src/modules/user/entities/user.entity.ts +++ b/src/modules/user/entities/user.entity.ts @@ -5,6 +5,7 @@ import { Criticism } from '../../criticisms/entities/criticism.entity'; @Entity({ tableName: 'users' }) +@Index({properties:['phone']}) export class User extends BaseEntity { [OptionalProps]?: 'createdAt' | 'deletedAt'