2025/01 22

내일배움캠프 14주차 WIL

이번 주 개발사항List API 개발- 상위개념인 보드쪽에서 담당하는 조회 메섣즈 제외, 위치 변경을 위한 별도의 메서드, 검증 로직,  DTO 파일 추가- 기존의 업데이트 메서드를 타이틀 업데이트와 포지션 업데이트로 분리하여 구성- 클라이언트에서 위치 변경 결과를 서버로 전달 받아 처리하는 구조로 설계- UpdateListPositionsDto와 ListPositionUpdate 클래스를 통해 요청 데이터의 구조를 검증 진행- 포지션 업데이트 시 리스트 수 일치, ID 매칭, 포지션 순서 유효성 검사를 수행- Promise.all을 활용하여 트랜잭션 없이 리스트 포지션을 일괄 업데이트 - Insomnia를 사용하여 리스트 생성, 타이틀 업데이트, 포지션 업데이트 API를 테스트하였고, 모두 성공적으로 ..

WIL 2025.01.31

내일배움캠프 14주차 금요일 TIL

금일은 리스트 기능의 API 테스트를 진행하였다.1. 리스트 생성속한 Board는 이미 생성되어 있을것이기 때문에, 클라이언트에서 보드에 대한 BoardId를 전달해주는 것을 상정하고 진행하였다.  2. 리스트 업데이트리스트에서 수정할 수 있는 텍스트는 타이틀이 유일하므로, 앞서 서술한 BoardId와 함께 수정할 타이틀을 클라이언트로 부터 전달 받는다.3. 포지션 업데이트 클라이언트에서 사용자의 포지션 변경 요청에 따른 최종 위치를 lists 배열로 전달해주는 것을 상정하고 진행하였으며, BoardId와 position 값 조합의 고유성을 지키기 위한 유효성 검증을 추가하여 진행하였다. 유효성 검증 리스트1. 전달받은 리스트와 db에 속한 리스트 개수가 같은지2. 전달받으 리스트들의 id가 실제로 지정..

TIL 2025.01.31

내일배움캠프 14주차 월요일 TIL

금일은 작성하던 List 쪽 구성을 그대로 진행하였는데, 변경사항에  따라 진행하였다.변경점 1. 조회 메서드의 경우 최상위 개념은 보드에서 모든 처리를 담당하도록 확인하였기 때문에 List 구성 중엔 조회 메서드 제외변경점 2. 순서 변경에 따른 추가 메서드, 검증, DTO 파일 추가 구성기존의 업데이트 메서드를 title 업데이트 메서드, position 업데이트 메서드로 나누어 따로 적용하였다.클라이언트에서 처리 후 결과를 전달하고, 이를 받아 서비스 계층에서 비즈니스 로직에 따른 처리를 진행하는 것을 가정하고 진행하였으며, 이에따라 서버 측의 트랜잭션 처리는 상정하지 않았다.// src/lists/dto/update-list-positions.dto.tsimport { IsInt, IsNotEmp..

카테고리 없음 2025.01.27

내일배움캠프 13주차 금요일 TIL

전체적인 엔티티 관계 오류 수정 후 스네이크 네이밍 전략까지 적용한 폴더를 dev에 업로드 한후 각자 dev를 소스로 개인 브랜치를 생성하여 작업을 진행하였다.내가 맏은 list 기능 구성을 위해, 먼저 list 엔티티를 참고하였다.// listimport { 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..

TIL 2025.01.24

내일배움캠프 13주차 목요일 TIL

오늘은 트렐로 팀 프로젝트 API 명세서 작성, NestJS 기본 디렉터리 구조 구성, 엔티티 파일 구성을 진행하였다.CLI 명령어(nest g module, nest g controller, nest g service 등)을 활용하여 폴더/파일을 자동생성하였고 src 폴더 내에 기능별로 폴더가 추가될 예정이다.엔티티 작성기존 작성한 ERD를 피드백 받은 후 db테이블 구조를 적용하기 위한 엔티티 파일을 작성하였다.@Entity 데코레이터로 어떤 테이블에 매핑할 지,  @PrimaryGeneratedColumn(), @Column()으로 어떤 컬럼을 가질지 지정할 수 있었다.// trelloProject/src/users/entities/user.entity.tsimport { Entity, Prim..

TIL 2025.01.23

내일배움캠프 13주차 수요일 TIL

DTO란? 어플리케이션 내에서 데이터 전송을 위한 객체.(클라이언트와 서버 간에 데이터를 주고받을  때, 어플리케이션의 다양한 계층 간 데이터 전달 시)NestJS와 같은 프레임워크에서는 DTO를 사용하여 - 데이터의 구조를 명확히 정의하고, (ex : 유저 등록 시 필요한 필드(이메일, 비밀번호 등)를 명시적으로 지정)- 유효성 검사를 통해 데이터의 무결성을 보장할 수 있고,( class-validator같은 라이브러리를 함께 사용하여 들어오는 데이터의 형식, 조건을 자동으로 검사할 수 있음)- 타입 안정성을 보장받기 좋다. validation 폴더에서 별도로 유효성 검사를 수행하는 것과 비슷?사용법DTO 클래스 정의(dto.ts 파일 구성) > 컨트롤러에 import하여 DTO 사용** 롤 팬 커뮤니..

카테고리 없음 2025.01.22

내일배움캠프 13주차 화요일 TIL

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.function solution(n, m) { let arr = []; // 유클리드 호제법을 통해 최대공약수를 구하는 함수 function gcd (n, m) { if (m === 0) return n; return gcd(m, n % m); } // 두 수의 곱을 최대공약수로 나누면, 최소공배수를 구할 수 있음 function lcm (n, m) { ..

TIL 2025.01.21

내일배움캠프 12주차 금요일 TIL

오늘 프로젝트를 완료하였다.3계층 아키텍처 이해가 API 설계를 수월하게 만들었지만 의사소통 부재가 곧 기능 누락으로 이어진다는 교훈을 얻었다앞으로는 팀원들이 어떤 기능을 어느 정도까지 진행하고 있는지 주기적으로 체크해야겠다고 다짐했다. 프로젝트에서 3계층 아키텍처를 적용해보면서 레이어별 역할과 책임이 명확해져서 API 설계에 자신감을 얻었다.코드 흐름을 파악하기 훨씬 쉬워졌고, 협업에도 큰 도움이 되었다고 느꼈다.

TIL 2025.01.17

내일배움캠프 12주차 WIL

백오피스 프로젝트 KPT 회고Keep3계층 아키텍처에 대한 이해도와 실제 API 구성 경험프로젝트를 진행하며 3계층 아키텍처 구조에 대한 이해도가 크게 높아졌고, 이를 활용해 API를 설계ㆍ구현하면서 자신감이 생김.구동 순서와 흐름에 대한 이해도 향상프로젝트를 진행하며 3계층 아키텍처 구조에 대한 이해도가 크게 높아졌고, 이를 활용해 API를 설계ㆍ구현하면서 자신감이 생김.타인의 코드 파악 및 습관 비교 학습다른 팀원이 작성한 코드와 나의 코드가 미세하게 다른 부분을 분석하면서, 타인의 코드를 빠르게 파악하는 역량과 다양한 코딩 습관을 학습하는 기회가 되었음.추가적인 기능 구현에 대한 도전정신프로젝트에서 요구되는 핵심 기능 외에도 추가 구현이 가능한 기능들에 대해 적극적으로 도전하고, 팀원들과 협력해 나..

카테고리 없음 2025.01.17

내일배움캠프 12주차 목요일 TIL

내가 작성한 리뷰 API 정리Repository (데이터 접근 계층)Prisma ORM을 통해 DB와 직접 통신하는 계층입니다.주로 findMany, findUnique, create, update, delete 같은 메서드를 통해 리뷰를 CRUD(조회/생성/수정/삭제) 합니다.비즈니스 로직 없이 쿼리만 담당하며, 결과를 반환해 줍니다.Service (비즈니스 로직 계층)Repository를 주입받아, 유효성 검사와 비즈니스 규칙을 처리합니다. 예:별점이 1~5 범위인지 검사중복 리뷰(결제 건당 1개) 여부 확인정렬(최신순) 등 추가 로직필요한 로직을 수행한 후, Repository를 호출하여 DB에 접근하고, 결과값을 가공해 Controller로 전달Controller (프레젠테이션 계층)Express..

TIL 2025.01.16