diff --git a/backend/package-lock.json b/backend/package-lock.json index 5e9d492bbacf6bc20b17cc08169e94590c20224d..6dce13b1e9d75aad46da60e034a183e6193136a2 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -12,6 +12,7 @@ "@nestjs/common": "^8.0.0", "@nestjs/config": "^2.1.0", "@nestjs/core": "^8.0.0", + "@nestjs/mapped-types": "^1.0.1", "@nestjs/platform-express": "^8.0.0", "@prisma/client": "^3.15.1", "jshint": "^2.13.4", @@ -1598,6 +1599,25 @@ } } }, + "node_modules/@nestjs/mapped-types": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.1.tgz", + "integrity": "sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg==", + "peerDependencies": { + "@nestjs/common": "^7.0.8 || ^8.0.0", + "class-transformer": "^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0", + "class-validator": "^0.11.1 || ^0.12.0 || ^0.13.0", + "reflect-metadata": "^0.1.12" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, "node_modules/@nestjs/platform-express": { "version": "8.4.6", "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.4.6.tgz", @@ -10088,6 +10108,12 @@ "uuid": "8.3.2" } }, + "@nestjs/mapped-types": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.1.tgz", + "integrity": "sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg==", + "requires": {} + }, "@nestjs/platform-express": { "version": "8.4.6", "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.4.6.tgz", diff --git a/backend/package.json b/backend/package.json index 36e70e70cf2424848c3337945fe3ea118be15533..eab4f846e123923be0e3822bc98e2e8d5e0bb9f7 100644 --- a/backend/package.json +++ b/backend/package.json @@ -24,6 +24,7 @@ "@nestjs/common": "^8.0.0", "@nestjs/config": "^2.1.0", "@nestjs/core": "^8.0.0", + "@nestjs/mapped-types": "^1.0.1", "@nestjs/platform-express": "^8.0.0", "@prisma/client": "^3.15.1", "jshint": "^2.13.4", diff --git a/backend/src/api/categories/categories.controller.spec.ts b/backend/src/api/categories/categories.controller.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..66257decefec984d389a9b4515d567cdf9477ddc --- /dev/null +++ b/backend/src/api/categories/categories.controller.spec.ts @@ -0,0 +1,20 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { CategoriesController } from './categories.controller'; +import { CategoriesService } from './categories.service'; + +describe('CategoriesController', () => { + let controller: CategoriesController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [CategoriesController], + providers: [CategoriesService], + }).compile(); + + controller = module.get<CategoriesController>(CategoriesController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/backend/src/api/categories/categories.controller.ts b/backend/src/api/categories/categories.controller.ts new file mode 100644 index 0000000000000000000000000000000000000000..7f461f632b9a4057019bd294007df834b2538c03 --- /dev/null +++ b/backend/src/api/categories/categories.controller.ts @@ -0,0 +1,35 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { CategoriesService } from './categories.service'; +import { CreateCategoryDto } from './dto/create-category.dto'; +import { UpdateCategoryDto } from './dto/update-category.dto'; + +@Controller('categories') +export class CategoriesController { + constructor(private readonly categoriesService: CategoriesService) {} + + @Post() + create(@Body() createCategoryDto: CreateCategoryDto) { + return this.categoriesService.create(createCategoryDto); + } + + @Get() + findAll() { + return this.categoriesService.findAll(); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.categoriesService.findOne(id); + } +/* + @Patch(':id') + update(@Param('id') id: string, @Body() updateCategoryDto: UpdateCategoryDto) { + return this.categoriesService.update(id, updateCategoryDto); + } + + @Delete(':id') + remove(@Param('id') id: string) { + return this.categoriesService.remove(id); + } +*/ +} diff --git a/backend/src/api/categories/categories.module.ts b/backend/src/api/categories/categories.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..8776b448c5f6f53e4956da0518c374d3190afae2 --- /dev/null +++ b/backend/src/api/categories/categories.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { CategoriesService } from './categories.service'; +import { CategoriesController } from './categories.controller'; + +@Module({ + controllers: [CategoriesController], + providers: [CategoriesService] +}) +export class CategoriesModule {} diff --git a/backend/src/api/categories/categories.service.spec.ts b/backend/src/api/categories/categories.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9095d781e293688a268f41b4b272372c6a455636 --- /dev/null +++ b/backend/src/api/categories/categories.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { CategoriesService } from './categories.service'; + +describe('CategoriesService', () => { + let service: CategoriesService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [CategoriesService], + }).compile(); + + service = module.get<CategoriesService>(CategoriesService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/backend/src/api/categories/categories.service.ts b/backend/src/api/categories/categories.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..1ee0421117dac65ac04bb5ac37aaa6efbcf7a265 --- /dev/null +++ b/backend/src/api/categories/categories.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@nestjs/common'; +import { CreateCategoryDto } from './dto/create-category.dto'; +import { UpdateCategoryDto } from './dto/update-category.dto'; + +@Injectable() +export class CategoriesService { + create(createCategoryDto: CreateCategoryDto) { + return 'This action adds a new category'; + } + + findAll() { + return `This action returns all categories`; + } + + findOne(id: string) { + return `This action returns a #${id} category`; + } + + update(id: string, updateCategoryDto: UpdateCategoryDto) { + return `This action updates a #${id} category`; + } + + remove(id: string) { + return `This action removes a #${id} category`; + } +} diff --git a/backend/src/api/categories/dto/create-category.dto.ts b/backend/src/api/categories/dto/create-category.dto.ts new file mode 100644 index 0000000000000000000000000000000000000000..222267216a096df2b26ee9c3905bb9074cfad9e4 --- /dev/null +++ b/backend/src/api/categories/dto/create-category.dto.ts @@ -0,0 +1,3 @@ +export class CreateCategoryDto { + name: string; +} diff --git a/backend/src/api/categories/dto/update-category.dto.ts b/backend/src/api/categories/dto/update-category.dto.ts new file mode 100644 index 0000000000000000000000000000000000000000..1ace9d9df6bfbf99e8409e3d961860ea43efcfad --- /dev/null +++ b/backend/src/api/categories/dto/update-category.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/mapped-types'; +import { CreateCategoryDto } from './create-category.dto'; + +export class UpdateCategoryDto extends PartialType(CreateCategoryDto) {} diff --git a/backend/src/api/categories/entities/category.entity.ts b/backend/src/api/categories/entities/category.entity.ts new file mode 100644 index 0000000000000000000000000000000000000000..6f4fd523af696c19290a337d30fcfc7402994cde --- /dev/null +++ b/backend/src/api/categories/entities/category.entity.ts @@ -0,0 +1 @@ +export class Category {} diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 278b638f9d853fe8c1ff8cb67ea693775b49b99e..a90177f77d35d21984ac45f77c815940aef55676 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -1,10 +1,14 @@ import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; +import { CategoriesModule } from './api/categories/categories.module'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ - imports: [ConfigModule.forRoot()], + imports: [ + ConfigModule.forRoot(), + CategoriesModule + ], controllers: [AppController], providers: [AppService], })