Skip to content

Commit 9b35ada

Browse files
WIP Categories
1 parent cbc672e commit 9b35ada

File tree

7 files changed

+67
-8
lines changed

7 files changed

+67
-8
lines changed
File renamed without changes.

service/src/core/categories/schemas/categories.schema.ts renamed to service/src/core/categories/_schemas/categories.schema.ts

File renamed without changes.

service/src/core/categories/categories.controller.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { DeleteResult } from 'mongodb'
22
import { Test, TestingModule } from '@nestjs/testing'
33
import { CategoriesController } from './categories.controller'
44
import { CategoriesService } from './categories.service'
5-
import { CategoriesDto } from './dto/categories.dto'
6-
import { Categories } from './schemas/categories.schema'
5+
import { CategoriesDto } from './_dto/categories.dto'
6+
import { Categories } from './_schemas/categories.schema'
77
import { HttpException, HttpStatus } from '@nestjs/common'
88
import { Types } from 'mongoose'
99
import { Response, Request } from 'express'
Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,70 @@
1-
import { Controller } from '@nestjs/common'
2-
import { CategoriesCreateDto } from './dto/categories.dto'
1+
import { Body, Controller, Delete, Get, HttpStatus, Param, Patch, Post, Req, Res } from '@nestjs/common'
2+
import { CategoriesCreateDto, CategoriesUpdateDto } from './_dto/categories.dto'
33
import { CategoriesService } from './categories.service'
44
import { AbstractController } from '~/_common/abstracts/abstract.controller'
5+
import { ApiParam } from '@nestjs/swagger'
6+
import { SearchFilterSchema, FilterSchema, SearchFilterOptions, FilterOptions, ObjectIdValidationPipe } from '@streamkits/nestjs_module_scrud'
7+
import { Types } from 'mongoose'
8+
import { Request, Response } from 'express'
59

610
@Controller('categories')
711
export class CategoriesController extends AbstractController {
8-
constructor(private readonly service: CategoriesService) {
12+
protected readonly projection = {
13+
name: 1,
14+
color: 1,
15+
icon: 1,
16+
}
17+
18+
constructor(private readonly _service: CategoriesService) {
919
super()
1020
}
21+
22+
@Post()
23+
public async create(@Req() req: Request, @Res() res: Response, @Body() body: CategoriesCreateDto) {
24+
const data = await this._service.create(body)
25+
return res.status(HttpStatus.CREATED).json({
26+
statusCode: HttpStatus.CREATED,
27+
data,
28+
})
29+
}
30+
31+
@Get()
32+
public async search(@Res() res: Response, @SearchFilterSchema() searchFilterSchema: FilterSchema, @SearchFilterOptions() searchFilterOptions: FilterOptions) {
33+
const [data, total] = await this._service.findAndCount(searchFilterSchema, this.projection, searchFilterOptions)
34+
return res.status(HttpStatus.OK).json({
35+
statusCode: HttpStatus.OK,
36+
total,
37+
data,
38+
})
39+
}
40+
41+
@Get(':_id([0-9a-fA-F]{24})')
42+
@ApiParam({ name: '_id', type: String })
43+
public async read(@Param('_id', ObjectIdValidationPipe) _id: Types.ObjectId, @Res() res: Response) {
44+
const data = await this._service.findById(_id)
45+
return res.status(HttpStatus.OK).json({
46+
statusCode: HttpStatus.OK,
47+
data,
48+
})
49+
}
50+
51+
@Patch(':_id([0-9a-fA-F]{24})')
52+
@ApiParam({ name: '_id', type: String })
53+
public async update(@Param('_id', ObjectIdValidationPipe) _id: Types.ObjectId, @Body() body: CategoriesUpdateDto, @Res() res: Response) {
54+
const data = await this._service.update(_id, body)
55+
return res.status(HttpStatus.OK).json({
56+
statusCode: HttpStatus.OK,
57+
data,
58+
})
59+
}
60+
61+
@Delete(':_id([0-9a-fA-F]{24})')
62+
@ApiParam({ name: '_id', type: String })
63+
public async remove(@Param('_id', ObjectIdValidationPipe) _id: Types.ObjectId, @Res() res: Response) {
64+
const data = await this._service.delete(_id)
65+
return res.status(HttpStatus.OK).json({
66+
statusCode: HttpStatus.OK,
67+
data,
68+
})
69+
}
1170
}

service/src/core/categories/categories.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Module } from '@nestjs/common'
22
import { MongooseModule } from '@nestjs/mongoose'
3-
import { CategoriesSchema, Categories } from './schemas/categories.schema'
3+
import { CategoriesSchema, Categories } from './_schemas/categories.schema'
44
import { CategoriesService } from './categories.service'
55
import { CategoriesController } from './categories.controller'
66

service/src/core/categories/categories.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { DeleteResult } from 'mongodb'
22
import { Test, TestingModule } from '@nestjs/testing'
33
import { CategoriesService } from './categories.service'
44
import { getModelToken } from '@nestjs/mongoose'
5-
import { Categories } from './schemas/categories.schema'
5+
import { Categories } from './_schemas/categories.schema'
66
import { Model, Types } from 'mongoose'
77

88
describe('CategoriesService', () => {

service/src/core/categories/categories.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Injectable } from '@nestjs/common'
22
import { InjectModel } from '@nestjs/mongoose'
3-
import { Categories } from './schemas/categories.schema'
3+
import { Categories } from './_schemas/categories.schema'
44
import { Model } from 'mongoose'
55
import { AbstractServiceSchema } from '~/_common/abstracts/abstract.service.schema'
66

0 commit comments

Comments
 (0)