From e7d6f7bbeee76b891213dee0ab73f2e511d15e08 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Tue, 16 Dec 2025 13:02:20 +0330 Subject: [PATCH] up --- .vscode/settings.json | 3 + .../icons/controllers/icons.controller.ts | 62 ++++++++++--------- src/modules/icons/providers/group.service.ts | 4 ++ 3 files changed, 39 insertions(+), 30 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index c81082e..28ec25e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,8 @@ "editor.codeActionsOnSave": { "source.fixAll": "explicit", "source.fixAll.eslint": "explicit" + }, + "[typescript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" } } diff --git a/src/modules/icons/controllers/icons.controller.ts b/src/modules/icons/controllers/icons.controller.ts index dd85961..5449f2b 100644 --- a/src/modules/icons/controllers/icons.controller.ts +++ b/src/modules/icons/controllers/icons.controller.ts @@ -8,106 +8,108 @@ import { UpdateGroupDto } from '../dto/update-group.dto'; import { ApiTags, ApiOperation, - ApiCreatedResponse, - ApiOkResponse, - ApiNotFoundResponse, ApiParam, ApiBody, ApiBearerAuth, } from '@nestjs/swagger'; import { SuperAdminAuthGuard } from 'src/modules/auth/guards/superAdminAuth.guard'; import { UseGuards } from '@nestjs/common'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; @ApiTags('icons') -@Controller('admin/icons') -@UseGuards(SuperAdminAuthGuard) +@Controller() @ApiBearerAuth() export class IconsController { constructor( private readonly iconService: IconService, private readonly groupService: GroupService, - ) {} + ) { } - // Icon endpoints - @Post() + @Get('super-admin/groups/icons') + @UseGuards(AdminAuthGuard) + @ApiOperation({ summary: 'Get all icons' }) + findAllPublicIcons() { + return this.groupService.findAllPublic(); + } + + + @Post('super-admin/icons') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Create icon' }) - @ApiCreatedResponse({ description: 'Icon created', type: CreateIconDto }) @ApiBody({ type: CreateIconDto }) createIcon(@Body() dto: CreateIconDto) { return this.iconService.create(dto); } - @Get() + @Get('super-admin/icons') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Get all icons' }) - @ApiOkResponse({ description: 'List of all icons' }) findAllIcons() { return this.iconService.findAll(); } - @Get(':id') + @Get('super-admin/icons/:id') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Get icon by id' }) - @ApiOkResponse({ description: 'Icon detail', type: CreateIconDto }) - @ApiNotFoundResponse({ description: 'Icon not found' }) @ApiParam({ name: 'id', required: true, type: String }) findOneIcon(@Param('id') id: string) { return this.iconService.findOne(id); } - @Patch(':id') + @Patch('super-admin/icons/:id') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Update icon' }) @ApiParam({ name: 'id' }) @ApiBody({ type: UpdateIconDto }) - @ApiOkResponse({ description: 'Updated icon', type: UpdateIconDto }) updateIcon(@Param('id') id: string, @Body() dto: UpdateIconDto) { return this.iconService.update(id, dto); } - @Delete(':id') + @Delete('super-admin/icons/:id') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Delete icon' }) @ApiParam({ name: 'id' }) - @ApiOkResponse({ description: 'Deleted' }) removeIcon(@Param('id') id: string) { return this.iconService.remove(id); } // Group endpoints (must come before :id routes to avoid route conflicts) - @Post('groups') + @Post('super-admin/icons/groups') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Create icon group' }) - @ApiCreatedResponse({ description: 'Group created', type: CreateGroupDto }) @ApiBody({ type: CreateGroupDto }) createGroup(@Body() dto: CreateGroupDto) { return this.groupService.create(dto); } - @Get('groups') + @Get('super-admin/icons/groups') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Get all icon groups' }) - @ApiOkResponse({ description: 'List of all icon groups' }) findAllGroups() { return this.groupService.findAll(); } - @Get('groups/:id') + @Get('super-admin/icons/groups/:id') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Get icon group by id' }) - @ApiOkResponse({ description: 'Group detail', type: CreateGroupDto }) - @ApiNotFoundResponse({ description: 'Group not found' }) @ApiParam({ name: 'id', required: true, type: String }) findOneGroup(@Param('id') id: string) { return this.groupService.findOne(id); } - @Patch('groups/:id') + @Patch('super-admin/icons/groups/:id') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Update icon group' }) @ApiParam({ name: 'id' }) - @ApiBody({ type: UpdateGroupDto }) - @ApiOkResponse({ description: 'Updated group', type: UpdateGroupDto }) updateGroup(@Param('id') id: string, @Body() dto: UpdateGroupDto) { return this.groupService.update(id, dto); } - @Delete('groups/:id') + @Delete('super-admin/icons/groups/:id') + @UseGuards(SuperAdminAuthGuard) @ApiOperation({ summary: 'Delete icon group' }) @ApiParam({ name: 'id' }) - @ApiOkResponse({ description: 'Deleted' }) removeGroup(@Param('id') id: string) { return this.groupService.remove(id); } diff --git a/src/modules/icons/providers/group.service.ts b/src/modules/icons/providers/group.service.ts index 173d0d9..3e8afa6 100644 --- a/src/modules/icons/providers/group.service.ts +++ b/src/modules/icons/providers/group.service.ts @@ -54,5 +54,9 @@ export class GroupService { group.deletedAt = new Date(); await this.em.persistAndFlush(group); } + + findAllPublic(): Promise { + return this.groupRepository.find({ deletedAt: null }, { populate: ['icons'] }); + } }