diff --git a/backend/src/api/directors/directors.controller.spec.ts b/backend/src/api/directors/directors.controller.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b8d105a47442f05bb3d10c8c60e74585e584b9bd --- /dev/null +++ b/backend/src/api/directors/directors.controller.spec.ts @@ -0,0 +1,20 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { DirectorsController } from './directors.controller'; +import { DirectorsService } from './directors.service'; + +describe('DirectorsController', () => { + let controller: DirectorsController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [DirectorsController], + providers: [DirectorsService], + }).compile(); + + controller = module.get<DirectorsController>(DirectorsController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/backend/src/api/directors/directors.controller.ts b/backend/src/api/directors/directors.controller.ts new file mode 100644 index 0000000000000000000000000000000000000000..b95aac47bf34a881a3ae742cd94d757692755919 --- /dev/null +++ b/backend/src/api/directors/directors.controller.ts @@ -0,0 +1,45 @@ +import { + Controller, + Get, + Post, + Body, + Patch, + Param, + Delete, +} from '@nestjs/common'; +import { DirectorsService } from './directors.service'; +import { CreateDirectorDto } from './dto/create-director.dto'; +import { UpdateDirectorDto } from './dto/update-director.dto'; + +@Controller('director') +export class DirectorsController { + constructor(private readonly directorsService: DirectorsService) {} + + @Post() + async create(@Body() createDirectorDto: CreateDirectorDto) { + return await this.directorsService.create(createDirectorDto); + } + + @Get() + async findAll() { + return await this.directorsService.findAll(); + } + + @Get(':id') + async findOne(@Param('id') id: string) { + return await this.directorsService.findOne(id); + } + + @Patch(':id') + async update( + @Param('id') id: string, + @Body() updateDirectorDto: UpdateDirectorDto, + ) { + return await this.directorsService.update(id, updateDirectorDto); + } + + @Delete(':id') + async remove(@Param('id') id: string) { + return await this.directorsService.remove(id); + } +} diff --git a/backend/src/api/directors/directors.module.ts b/backend/src/api/directors/directors.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..bed9e1db83a4f6f5716e5757edd91902048c684d --- /dev/null +++ b/backend/src/api/directors/directors.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { DirectorsService } from './directors.service'; +import { DirectorsController } from './directors.controller'; +import { PrismaService } from '../../prisma.service'; + +@Module({ + controllers: [DirectorsController], + providers: [DirectorsService, PrismaService], +}) +export class DirectorsModule {} diff --git a/backend/src/api/directors/directors.service.spec.ts b/backend/src/api/directors/directors.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..06fc8bf8cf4e1fe65108251d69d3d902e22d3166 --- /dev/null +++ b/backend/src/api/directors/directors.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { DirectorsService } from './directors.service'; + +describe('DirectorsService', () => { + let service: DirectorsService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [DirectorsService], + }).compile(); + + service = module.get<DirectorsService>(DirectorsService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/backend/src/api/directors/directors.service.ts b/backend/src/api/directors/directors.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..5def117aab84769ce120d2c2f20d76fd0daa8170 --- /dev/null +++ b/backend/src/api/directors/directors.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@nestjs/common'; +import { CreateDirectorDto } from './dto/create-director.dto'; +import { UpdateDirectorDto } from './dto/update-director.dto'; +import { PrismaService } from '../../prisma.service'; + +@Injectable() +export class DirectorsService { + constructor(private prisma: PrismaService) {} + + create(createDirectorDto: CreateDirectorDto) { + return this.prisma.director.create({ + data: createDirectorDto, + }); + } + + findAll() { + return this.prisma.director.findMany(); + } + + findOne(id: string) { + return this.prisma.director.findUnique({ + where: { + id, + }, + }); + } + + update(id: string, updateDirectorDto: UpdateDirectorDto) { + return `This action updates a #${id} director`; + } + + remove(id: string) { + return `This action removes a #${id} director`; + } +} diff --git a/backend/src/api/directors/dto/create-director.dto.ts b/backend/src/api/directors/dto/create-director.dto.ts new file mode 100644 index 0000000000000000000000000000000000000000..f1c2bc82cf286ab2a88cd439b9d7abe6837e6021 --- /dev/null +++ b/backend/src/api/directors/dto/create-director.dto.ts @@ -0,0 +1,5 @@ +export class CreateDirectorDto { + readonly name: string; + readonly surname: string; + readonly birthDate?: string; +} diff --git a/backend/src/api/directors/dto/update-director.dto.ts b/backend/src/api/directors/dto/update-director.dto.ts new file mode 100644 index 0000000000000000000000000000000000000000..48d1b492d36e69fe24581a92f7477c1200fc4e17 --- /dev/null +++ b/backend/src/api/directors/dto/update-director.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/mapped-types'; +import { CreateDirectorDto } from './create-director.dto'; + +export class UpdateDirectorDto extends PartialType(CreateDirectorDto) {} diff --git a/backend/src/api/directors/entities/director.entity.ts b/backend/src/api/directors/entities/director.entity.ts new file mode 100644 index 0000000000000000000000000000000000000000..c0306425fa0fefd07ea40c5a7439be7d22582165 --- /dev/null +++ b/backend/src/api/directors/entities/director.entity.ts @@ -0,0 +1,11 @@ +import { Director } from '@prisma/client'; + +export class DirectorEntity implements Director { + id: string; + createdAt: Date; + updatedAt: Date; + deletedAt: Date; + name: string; + surname: string; + birthDate: Date; +}