Files
psp_api/src/modules/consumer/business-activities/goods/goods.controller.ts
T
ahasani 1d47fb1a1d refactor(goods): streamline goods service and controller, remove favorites module
- Removed the PosGoodFavorite module, controller, and service to simplify the codebase.
- Updated goods service to handle cache invalidation directly.
- Refactored goods controller to remove commented-out code and improve clarity.
- Introduced OwnedGoods module for better organization of owned goods functionality.
- Updated DTOs to extend from existing structures for consistency.
- Enhanced cache invalidation logic in goods service and owned goods service.
2026-05-20 20:22:00 +03:30

90 lines
2.6 KiB
TypeScript

import { TokenAccount } from '@/common/decorators/tokenInfo.decorator'
import { multerImageOptions } from '@/multer.config'
import {
Body,
Controller,
Get,
Param,
Patch,
Post,
UploadedFile,
UseInterceptors,
} from '@nestjs/common'
import { FileInterceptor } from '@nestjs/platform-express'
import { ApiBody, ApiConsumes, ApiTags } from '@nestjs/swagger'
import { CreateGoodDto, UpdateGoodDto } from './dto/good.dto'
import type {
ConsumerBusinessActivityGoodsServiceFindAllResponseDto,
ConsumerBusinessActivityGoodsServiceFindOneResponseDto,
} from './dto/goods-response.dto'
import { ConsumerBusinessActivityGoodsService } from './goods.service'
@ApiTags('ConsumerBusinessActivityGoods')
@Controller('consumer/business_activities/:businessActivityId/goods')
export class ConsumerBusinessActivityGoodsController {
constructor(private readonly service: ConsumerBusinessActivityGoodsService) {}
@Get()
async findAll(
@TokenAccount('userId') consumer_id: string,
@Param('businessActivityId') businessActivityId: string,
): Promise<ConsumerBusinessActivityGoodsServiceFindAllResponseDto> {
return this.service.findAll(consumer_id, businessActivityId)
}
@Get(':id')
async findOne(
@TokenAccount('userId') consumer_id: string,
@Param('businessActivityId') businessActivityId: string,
@Param('id') id: string,
): Promise<ConsumerBusinessActivityGoodsServiceFindOneResponseDto> {
return this.service.findOne(consumer_id, businessActivityId, id)
}
@Post()
@UseInterceptors(FileInterceptor('image', multerImageOptions))
@ApiConsumes('multipart/form-data')
@ApiBody({
schema: {
type: 'object',
properties: {
image: { type: 'string', format: 'binary' },
},
},
})
create(
@Param('businessActivityId') businessActivityId: string,
@Body() data: CreateGoodDto,
@UploadedFile() file: Express.Multer.File,
) {
return this.service.create(businessActivityId, data, file)
}
@Patch(':id')
@UseInterceptors(FileInterceptor('image', multerImageOptions))
@ApiConsumes('multipart/form-data')
@ApiBody({
schema: {
type: 'object',
properties: {
image: { type: 'string', format: 'binary' },
},
},
})
update(
@TokenAccount('userId') consumer_id: string,
@Param('businessActivityId') businessActivityId: string,
@Param('id') id: string,
@Body() data: UpdateGoodDto,
@UploadedFile() file: Express.Multer.File,
) {
return this.service.update(consumer_id, businessActivityId, id, data, file)
}
// @Delete(':id')
// async delete(@Param('id') id: string) {
// return this.businessActivityAccountsService.delete(id)
// }
}