1- import { Body , Controller , Delete , Get , HttpStatus , Param , ParseFilePipe , Patch , Post , Query , Res , UploadedFile , UseInterceptors } from '@nestjs/common'
1+ import { Body , Controller , Delete , Get , HttpStatus , Param , ParseBoolPipe , ParseFilePipe , Patch , Post , Query , Res , UploadedFile , UseInterceptors } from '@nestjs/common'
22import { FileInterceptor } from '@nestjs/platform-express'
3- import { ApiParam , ApiTags } from '@nestjs/swagger'
3+ import { ApiBody , ApiConsumes , ApiOperation , ApiParam , ApiProduces , ApiTags , getSchemaPath } from '@nestjs/swagger'
44import { FilterOptions , FilterSchema , ObjectIdValidationPipe , SearchFilterOptions , SearchFilterSchema } from '@the-software-compagny/nestjs_module_restools'
55import { Response } from 'express'
66import { Types } from 'mongoose'
@@ -12,11 +12,12 @@ import { ApiReadResponseDecorator } from '~/_common/decorators/api-read-response
1212import { ApiUpdateDecorator } from '~/_common/decorators/api-update.decorator'
1313import { PickProjectionHelper } from '~/_common/helpers/pick-projection.helper'
1414import { PartialProjectionType } from '~/_common/types/partial-projection.type'
15- import { FilestorageCreateDto , FilestorageDto , FilestorageUpdateDto } from './_dto/filestorage.dto'
15+ import { FilestorageCreateDto , FilestorageDto , FilestorageUpdateDto , FileUploadDto } from './_dto/filestorage.dto'
1616import { TransformersFilestorageService } from './_services/transformers-filestorage.service'
1717import { FilestorageService } from './filestorage.service'
18+ import { ApiFileUploadDecorator } from '~/_common/decorators/api-file-upload.decorator'
1819
19- @ApiTags ( 'core ' )
20+ @ApiTags ( 'default ' )
2021@Controller ( 'filestorage' )
2122export class FilestorageController extends AbstractController {
2223 protected static readonly projection : PartialProjectionType < FilestorageDto > = {
@@ -32,7 +33,7 @@ export class FilestorageController extends AbstractController {
3233
3334 @Post ( )
3435 @UseInterceptors ( FileInterceptor ( 'file' ) )
35- @ApiCreateDecorator ( FilestorageCreateDto , FilestorageDto )
36+ @ApiFileUploadDecorator ( FileUploadDto , FilestorageCreateDto , FilestorageDto )
3637 public async create (
3738 @Res ( ) res : Response ,
3839 @Body ( ) body : FilestorageCreateDto ,
@@ -47,8 +48,21 @@ export class FilestorageController extends AbstractController {
4748
4849 @Get ( )
4950 @ApiPaginatedDecorator ( PickProjectionHelper ( FilestorageDto , FilestorageController . projection ) )
50- public async search ( @Res ( ) res : Response , @SearchFilterSchema ( ) searchFilterSchema : FilterSchema , @SearchFilterOptions ( ) searchFilterOptions : FilterOptions ) : Promise < Response > {
51- const [ data , total ] = await this . _service . findAndCount ( searchFilterSchema , FilestorageController . projection , searchFilterOptions )
51+ public async search (
52+ @Res ( ) res : Response ,
53+ @SearchFilterSchema ( ) searchFilterSchema : FilterSchema ,
54+ @SearchFilterOptions ( ) searchFilterOptions : FilterOptions ,
55+ @Query ( 'hidden' ) hiddenQuery : string ,
56+ ) : Promise < Response > {
57+ const hidden = / t r u e | o n | y e s | 1 / i. test ( hiddenQuery ) ;
58+ const extraSearch = { hidden : { $ne : true } }
59+ if ( hidden ) delete extraSearch [ 'hidden' ]
60+
61+ const [ data , total ] = await this . _service . findAndCount ( {
62+ ...extraSearch ,
63+ ...searchFilterSchema ,
64+ } , FilestorageController . projection , searchFilterOptions )
65+
5266 return res . status ( HttpStatus . OK ) . json ( {
5367 statusCode : HttpStatus . OK ,
5468 total,
0 commit comments