From ee723c1c55b69db008b537acaf60e2ba6aca441e Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sat, 22 Nov 2025 14:36:07 +0330 Subject: [PATCH] foods and ctegory --- .../controllers/public-category.controller.ts | 17 +++++++++++++++++ .../controllers/public-food.controller.ts | 18 ++++++++++++++++++ src/modules/foods/food.module.ts | 4 +++- src/modules/foods/providers/food.service.ts | 4 ++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/modules/foods/controllers/public-category.controller.ts create mode 100644 src/modules/foods/controllers/public-food.controller.ts diff --git a/src/modules/foods/controllers/public-category.controller.ts b/src/modules/foods/controllers/public-category.controller.ts new file mode 100644 index 0000000..8b37006 --- /dev/null +++ b/src/modules/foods/controllers/public-category.controller.ts @@ -0,0 +1,17 @@ +import { Controller, Get, Param } from '@nestjs/common'; +import { CategoryService } from '../providers/category.service'; +import { ApiTags, ApiOperation, ApiOkResponse, ApiParam } from '@nestjs/swagger'; + +@ApiTags('categories') +@Controller('categories') +export class PublicCategoryController { + constructor(private readonly categoryService: CategoryService) {} + + @Get('restaurant/:restId') + @ApiOperation({ summary: 'Get all categories by restaurant id' }) + @ApiParam({ name: 'restId', required: true, description: 'Restaurant ID' }) + @ApiOkResponse({ description: 'List of all categories for the restaurant' }) + findAllByRestaurant(@Param('restId') restId: string) { + return this.categoryService.findAll({ restId }); + } +} diff --git a/src/modules/foods/controllers/public-food.controller.ts b/src/modules/foods/controllers/public-food.controller.ts new file mode 100644 index 0000000..eb3befa --- /dev/null +++ b/src/modules/foods/controllers/public-food.controller.ts @@ -0,0 +1,18 @@ +import { Controller, Get, Param } from '@nestjs/common'; +import { FoodService } from '../providers/food.service'; +import { ApiTags, ApiOperation, ApiOkResponse, ApiParam } from '@nestjs/swagger'; + +@ApiTags('foods') +@Controller('foods') +export class PublicFoodController { + constructor(private readonly foodService: FoodService) {} + + @Get('restaurant/:restId') + @ApiOperation({ summary: 'Get all foods by restaurant id' }) + @ApiParam({ name: 'restId', required: true, description: 'Restaurant ID' }) + @ApiOkResponse({ description: 'List of all foods for the restaurant' }) + findAllByRestaurant(@Param('restId') restId: string) { + return this.foodService.findAllByRestaurant(restId); + } +} + diff --git a/src/modules/foods/food.module.ts b/src/modules/foods/food.module.ts index f602212..aec808c 100644 --- a/src/modules/foods/food.module.ts +++ b/src/modules/foods/food.module.ts @@ -1,7 +1,9 @@ import { Module } from '@nestjs/common'; import { FoodService } from './providers/food.service'; import { FoodController } from './controllers/food.controller'; +import { PublicFoodController } from './controllers/public-food.controller'; import { CategoryController } from './controllers/category.controller'; +import { PublicCategoryController } from './controllers/public-category.controller'; import { CategoryService } from './providers/category.service'; import { FoodRepository } from './repositories/food.repository'; import { CategoryRepository } from './repositories/category.repository'; @@ -14,7 +16,7 @@ import { JwtModule } from '@nestjs/jwt'; @Module({ imports: [MikroOrmModule.forFeature([Food, Category]), RestaurantsModule, AuthModule, JwtModule], - controllers: [FoodController, CategoryController], + controllers: [FoodController, PublicFoodController, CategoryController, PublicCategoryController], providers: [FoodService, CategoryService, FoodRepository, CategoryRepository], exports: [FoodRepository, CategoryRepository], }) diff --git a/src/modules/foods/providers/food.service.ts b/src/modules/foods/providers/food.service.ts index 7d53f9d..3ca436a 100644 --- a/src/modules/foods/providers/food.service.ts +++ b/src/modules/foods/providers/food.service.ts @@ -70,6 +70,10 @@ export class FoodService { return this.foodRepository.findAllPaginated(restId, dto); } + async findAllByRestaurant(restId: string): Promise { + return this.foodRepository.find({ restaurant: { id: restId } }); + } + findOne(id: string) { return this.foodRepository.findOne({ id }, { populate: ['categories'] }); }