전체적인 엔티티 관계 오류 수정 후 스네이크 네이밍 전략까지 적용한 폴더를 dev에 업로드 한후 각자 dev를 소스로 개인 브랜치를 생성하여 작업을 진행하였다.
내가 맏은 list 기능 구성을 위해, 먼저 list 엔티티를 참고하였다.
// list
import { Board } from 'src/boards/entities/board.entity';
import { Card } from 'src/cards/entities/card.entity';
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
OneToMany,
JoinColumn,
} from 'typeorm';
@Entity({
name: 'List',
})
export class List {
@PrimaryGeneratedColumn()
id: number; // id: 리스트 기본 키
@Column('int', { nullable: false })
boardId: number; // boardId: 리스트가 속한 보드의 id
@Column('int', { nullable: false, unique: true })
position: number; // position: 리스트 순서, 중복 방지
@Column('varchar', { nullable: false })
title: string; // title: 리스트 이름
@CreateDateColumn()
createdAt: Date; // 생성일, 자동
@UpdateDateColumn()
updatedAt: Date; // 수정일, 자동
@ManyToOne(() => Board, (board) => board.list, { onDelete: 'CASCADE' })
@JoinColumn({ name: 'board_id' })
board: Board;
@OneToMany(() => Card, (card) => card.list)
cards: Card[];
}
DTO 파일 구성
먼저 엔티티를 분석하였을 때, DTO에 포함하는 컬럼은 클라이언트가 제공해야 하는 데이터만 포함되어야 한다. 자동으로 관리되는 createdAt, updatedAt, id, 관계 설정된 엔티티들은 포함되지 않는다.
이에 따라 새로운 리스트 생성 시 클라이언트로부터 받는 데이터(boardId, title, position)의 구조를 CreateListDto에서 정의하였다.
// src/lists/dto/create-list.dto.ts
import { IsInt, IsNotEmpty, IsOptional, IsString, Min } from 'class-validator';
export class CreateListDto {
@IsInt() // 정수인지 검증
@Min(1) // 최소값은 1
@IsNotEmpty() // 필수 입력 조건
boardId: number;
@IsInt()
@Min(1)
@IsNotEmpty()
position: number;
@IsString() // 문자열인지
@IsNotEmpty()
title: string;
}
UpdateListDto도 추가로 구성하였다.
// src/lists/dto/update-list.dto.ts
import { PartialType } from '@nestjs/mapped-types';
import { CreateListDto } from './create-list.dto';
import { IsInt, IsOptional, IsString, Min } from 'class-validator';
export class UpdateListDto extends PartialType(CreateListDto) {
@IsInt()
@Min(1)
@IsOptional()
position?: number;
@IsString()
@IsOptional()
title?: string;
}
이후 컨트롤러에서 클라이언트의 요청을 받고, DTO를 통해 전달받은 데이터를 유효성 검증할 수 있도록 구성할 예정.
'TIL' 카테고리의 다른 글
내일배움캠프 13주차 목요일 TIL (0) | 2025.01.23 |
---|---|
내일배움캠프 13주차 화요일 TIL (1) | 2025.01.21 |
내일배움캠프 12주차 금요일 TIL (0) | 2025.01.17 |
내일배움캠프 12주차 목요일 TIL (0) | 2025.01.16 |
내일배움캠프 12주차 수요일 TIL (0) | 2025.01.15 |