미리 import 와 네이밍을 맞춰서 편하게 사용할 수 있는 템플릿입니다.

work, Work,WORK 세 글자를 각각 원하는대로 바꾸면 됩니다.

src/01_controller/workModule.ts

import { Module } from '@nestjs/common';
import { WorkController } from 'src/01_controller/work/work.controller';
import { WorkUseCase } from 'src/02_usecase/work/work.usecase';
import { WorkService } from 'src/03_service/work/work.service';
import { WORKREPOSITORY } from 'src/03_service/work/work.repository.interface';
import { WorkRepository } from 'src/04_infrastructure/work/work.repository';

@Module({
  controllers: [WorkController],
  providers: [
    WorkUseCase,
    WorkService,
    {
      provide: WORKREPOSITORY,
      useClass: WorkRepository,
    },
  ],
})
export class WorkModule {}

src/01_controller/workController.ts

import { Controller, Get, Req, Res } from '@nestjs/common';
import { WorkRequestDto } from 'src/01_controller/work/work.request.dto';
import { WorkResponseDto } from 'src/01_controller/work/work.response.dto';
import { WorkUseCase } from 'src/02_usecase/work/work.usecase';
import { WorkUseCaseCommand } from 'src/02_usecase/work/work.command';

@Controller('work')
export class WorkController {
  constructor(private readonly workUseCase: WorkUseCase) {}

  @Get('work')
  async work(@Req() req, @Res() res) {
    const requestDto = new WorkRequestDto(req.user);
    const command = new WorkUseCaseCommand(requestDto);
    const result = await this.workUseCase.work(command);
    return new WorkResponseDto(result);
  }
}

src/01_controller/workRequestDto.ts

export class WorkRequestDto {
  constructor(arg: any) {}
}

src/01_controller/workResponseDto .ts

export class WorkResponseDto {
  constructor(result: any) {}
}

src/02_usecase/work/work.usecase.ts