From 9bdf6146c2a72b22f9cec3df445ef53352abf0ec Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Thu, 12 Feb 2026 08:44:27 +0330 Subject: [PATCH] product --- src/modules/products/product.module.ts | 5 +++-- src/modules/products/providers/product.service.ts | 8 +++++++- .../products/repositories/favorite.repository.ts | 10 ++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/modules/products/repositories/favorite.repository.ts diff --git a/src/modules/products/product.module.ts b/src/modules/products/product.module.ts index 4e9ea10..1b8b987 100644 --- a/src/modules/products/product.module.ts +++ b/src/modules/products/product.module.ts @@ -13,6 +13,7 @@ import { AuthModule } from '../auth/auth.module'; import { JwtModule } from '@nestjs/jwt'; import { UtilsModule } from '../utils/utils.module'; import { Favorite } from './entities/favorite.entity'; +import { FavoriteRepository } from './repositories/favorite.repository'; @Module({ imports: [ @@ -24,7 +25,7 @@ import { Favorite } from './entities/favorite.entity'; ShopsModule ], controllers: [FoodController, CategoryController], - providers: [ProductService, CategoryService, ProductRepository, CategoryRepository], - exports: [ProductRepository, CategoryRepository, ProductService], + providers: [ProductService, CategoryService, ProductRepository, CategoryRepository,FavoriteRepository], + exports: [ProductRepository, CategoryRepository, FavoriteRepository, ProductService], }) export class ProductModule {} diff --git a/src/modules/products/providers/product.service.ts b/src/modules/products/providers/product.service.ts index d4020f0..b0ff4ca 100644 --- a/src/modules/products/providers/product.service.ts +++ b/src/modules/products/providers/product.service.ts @@ -12,6 +12,7 @@ import { Variant } from '../entities/variant.entity'; import { ShopService } from 'src/modules/shops/providers/shops.service'; import { CategoryService } from './category.service'; import { User } from 'src/modules/users/entities/user.entity'; +import { FavoriteRepository } from '../repositories/favorite.repository'; @Injectable() export class ProductService { @@ -20,6 +21,7 @@ export class ProductService { private readonly categoryRepository: CategoryRepository, private readonly categoryService: CategoryService, private readonly shopService: ShopService, + private readonly favoriteRepository: FavoriteRepository, private readonly em: EntityManager, ) { } // TODO : Messages must be in persian @@ -223,7 +225,11 @@ export class ProductService { async getMyFavorites(userId: string, shopId: string) { - return this.em.find(Favorite, { user: { id: userId }, product: { shop: { id: shopId } } }, { populate: ['product'] }); + return this.favoriteRepository.find({ + user: { id: userId }, + product: { shop: { id: shopId } } + }, + { populate: ['product'] }); } /** * Helper diff --git a/src/modules/products/repositories/favorite.repository.ts b/src/modules/products/repositories/favorite.repository.ts new file mode 100644 index 0000000..dfb9dbd --- /dev/null +++ b/src/modules/products/repositories/favorite.repository.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { Favorite } from '../entities/favorite.entity'; + +@Injectable() +export class FavoriteRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Favorite); + } +}