diff --git a/src/modules/auth/entities/refresh-token.entity.ts b/src/modules/auth/entities/refresh-token.entity.ts index c58e773..fa522d6 100644 --- a/src/modules/auth/entities/refresh-token.entity.ts +++ b/src/modules/auth/entities/refresh-token.entity.ts @@ -1,11 +1,11 @@ -import { Entity, Enum, Index, Property } from '@mikro-orm/core'; +import { Entity, Enum, Index, PrimaryKey, Property } from '@mikro-orm/core'; import { RefreshTokenType } from '../interfaces/IToken-payload'; @Entity({ tableName: 'refreshtokens' }) @Index({ properties: ['hashedToken'] }) -export class RefreshToken { - - @Property({ type: 'varchar', length: 255 }) +export class RefreshToken { + + @PrimaryKey({ type: 'varchar', length: 255 }) hashedToken!: string; @Property() diff --git a/src/modules/notification/entities/notification-preference.entity.ts b/src/modules/notification/entities/notification-preference.entity.ts index be316d0..805755a 100644 --- a/src/modules/notification/entities/notification-preference.entity.ts +++ b/src/modules/notification/entities/notification-preference.entity.ts @@ -1,11 +1,13 @@ -import { Entity, Property, ManyToOne, Unique } from '@mikro-orm/core'; +import { Entity, Property, ManyToOne, Unique, PrimaryKey } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { NotifTitleEnum } from '../interfaces/notification.interface'; import { NotifChannelEnum } from '../interfaces/notification.interface'; @Entity({ tableName: 'notification_preferences' }) export class NotificationPreference extends BaseEntity { - + @PrimaryKey({ type: 'bigint', autoincrement: true }) + id: bigint + @Property() title!: NotifTitleEnum; diff --git a/src/modules/notification/entities/notification.entity.ts b/src/modules/notification/entities/notification.entity.ts index 2f953ae..01e424e 100644 --- a/src/modules/notification/entities/notification.entity.ts +++ b/src/modules/notification/entities/notification.entity.ts @@ -1,4 +1,4 @@ -import { Entity, Property, ManyToOne, Enum } from '@mikro-orm/core'; +import { Entity, Property, ManyToOne, Enum, PrimaryKey } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { User } from '../../user/entities/user.entity'; import { NotifTitleEnum } from '../interfaces/notification.interface'; @@ -6,6 +6,8 @@ import { Admin } from 'src/modules/admin/entities/admin.entity'; @Entity({ tableName: 'notifications' }) export class Notification extends BaseEntity { + @PrimaryKey({ type: 'bigint', autoincrement: true }) + id: bigint @ManyToOne(() => User, { nullable: true }) user?: User; diff --git a/src/modules/payment/entities/payment.entity.ts b/src/modules/payment/entities/payment.entity.ts index 8621124..4199543 100644 --- a/src/modules/payment/entities/payment.entity.ts +++ b/src/modules/payment/entities/payment.entity.ts @@ -1,10 +1,14 @@ -import { Entity, ManyToOne, Property, Enum, Index } from '@mikro-orm/core'; +import { Entity, ManyToOne, Property, Enum, Index, PrimaryKey } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { Order } from '../../order/entities/order.entity'; import { PaymentGatewayEnum, PaymentMethodEnum, PaymentStatusEnum } from '../interface/payment'; +import { ulid } from 'ulid'; @Entity({ tableName: 'payments' }) export class Payment extends BaseEntity { + @PrimaryKey({ type: 'string', columnType:'char(26)' }) + id: string=ulid() + @ManyToOne(() => Order) @Index() order!: Order; diff --git a/src/modules/product/entities/attribute.entity.ts b/src/modules/product/entities/attribute.entity.ts index 2bd7431..19b5de3 100644 --- a/src/modules/product/entities/attribute.entity.ts +++ b/src/modules/product/entities/attribute.entity.ts @@ -1,11 +1,12 @@ -import { Entity, Enum, Property } from '@mikro-orm/core'; +import { Entity, Enum, ManyToOne, Property } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { AttributeType } from '../interface/product.interface'; +import { Product } from './product.entity'; @Entity({ tableName: 'attributes' }) export class Attribute extends BaseEntity { - @Property({ type: 'bigint' }) - productId: string + @ManyToOne(()=>Product) + product: Product @Property({ primary: true }) id: bigint; diff --git a/src/modules/product/entities/product.entity.ts b/src/modules/product/entities/product.entity.ts index ad31e2b..ac5d839 100644 --- a/src/modules/product/entities/product.entity.ts +++ b/src/modules/product/entities/product.entity.ts @@ -12,7 +12,7 @@ export class Product extends BaseEntity { @ManyToOne(() => Category) category: Category - @OneToMany(() => Attribute, (attr) => attr.productId) + @OneToMany(() => Attribute, (attr) => attr.product) attributes = new Collection(this) @Property() diff --git a/src/modules/product/product.module.ts b/src/modules/product/product.module.ts index 5b90b46..dc0e156 100644 --- a/src/modules/product/product.module.ts +++ b/src/modules/product/product.module.ts @@ -10,6 +10,7 @@ import { AttributeValue } from './entities/attribute-value.entity'; import { AuthModule } from '../auth/auth.module'; import { JwtModule } from '@nestjs/jwt'; import { UtilsModule } from '../util/utils.module'; +import { CategoryRepository } from './repositories/category.repository'; @Module({ imports: [ @@ -19,7 +20,7 @@ import { UtilsModule } from '../util/utils.module'; UtilsModule, ], controllers: [productController,], - providers: [productService, ProductRepository,], - exports: [ProductRepository,], + providers: [productService, ProductRepository,CategoryRepository], + exports: [ProductRepository,CategoryRepository], }) export class productModule { } diff --git a/src/modules/roles/entities/role.entity.ts b/src/modules/roles/entities/role.entity.ts index 39fa828..26bc617 100755 --- a/src/modules/roles/entities/role.entity.ts +++ b/src/modules/roles/entities/role.entity.ts @@ -2,7 +2,6 @@ import { Collection, Entity, ManyToMany, OneToMany, PrimaryKey, Property } from import { BaseEntity } from '../../../common/entities/base.entity'; import { Permission } from './permission.entity'; import { RolePermission } from './rolePermission.entity'; -import { Admin } from 'src/modules/admin/entities/admin.entity'; import { ulid } from 'ulid'; @Entity({ tableName: 'roles' }) @@ -22,6 +21,5 @@ export class Role extends BaseEntity { @ManyToMany({ entity: () => Permission, pivotEntity: () => RolePermission, inversedBy: p => p.roles }) permissions = new Collection(this); - @OneToMany(() => Admin, admin => admin.role) - admins = new Collection(this); + } diff --git a/src/modules/roles/providers/roles.service.ts b/src/modules/roles/providers/roles.service.ts index 3c16429..543a731 100644 --- a/src/modules/roles/providers/roles.service.ts +++ b/src/modules/roles/providers/roles.service.ts @@ -107,9 +107,6 @@ export class RolesService { if (!role) { throw new NotFoundException('Role not found'); } - if (!role.admins.isEmpty()) { - throw new BadRequestException('Role has admins'); - } // Hard delete pivot table entries (role_permissions) before soft deleting the role await this.em.nativeDelete(RolePermission, { role: { id: role.id } }); diff --git a/src/modules/user/entities/credit-transaction.entity.ts b/src/modules/user/entities/credit-transaction.entity.ts index 904fb37..3b51714 100644 --- a/src/modules/user/entities/credit-transaction.entity.ts +++ b/src/modules/user/entities/credit-transaction.entity.ts @@ -1,4 +1,4 @@ -import { Entity, Property, ManyToOne, Index, Enum } from '@mikro-orm/core'; +import { Entity, Property, ManyToOne, Index, Enum, PrimaryKey } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { User } from './user.entity'; import { CreditTransactionType } from '../interface/credit'; @@ -6,6 +6,9 @@ import { CreditTransactionType } from '../interface/credit'; @Entity({ tableName: 'credit_transactions' }) @Index({ properties: ['user'] }) export class CreditTransaction extends BaseEntity { + @PrimaryKey({ type: 'bigint', autoincrement: true }) + id: bigint + @ManyToOne(() => User) user!: User; diff --git a/src/modules/user/entities/user-address.entity.ts b/src/modules/user/entities/user-address.entity.ts index d2ae78c..0359fcd 100644 --- a/src/modules/user/entities/user-address.entity.ts +++ b/src/modules/user/entities/user-address.entity.ts @@ -1,9 +1,12 @@ -import { Entity, Property, ManyToOne } from '@mikro-orm/core'; +import { Entity, Property, ManyToOne, PrimaryKey } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { User } from './user.entity'; @Entity({ tableName: 'user_addresses' }) export class UserAddress extends BaseEntity { + @PrimaryKey({ type: 'bigint', autoincrement: true }) + id: bigint + @ManyToOne(() => User) user!: User; diff --git a/src/modules/user/providers/wallet.service.ts b/src/modules/user/providers/wallet.service.ts index 6a8d040..a9a73f9 100644 --- a/src/modules/user/providers/wallet.service.ts +++ b/src/modules/user/providers/wallet.service.ts @@ -10,8 +10,8 @@ import { CreditTransaction } from '../entities/credit-transaction.entity'; @Injectable() export class WalletService { constructor( - private readonly walletTransactionRepository: CreditTransactionRepository, - private readonly pointTransactionRepository: CreditTransaction, + // private readonly walletTransactionRepository: CreditTransactionRepository, + ) { } // async getUserWalletTransactions(