# 원티드 프리온보딩 백엔드 인턴십 7th : 231113 TIL

- Author: @laetipark
- Published: 2023-12-14
- Updated: 2023-12-31
- Source: http://blex.me/@laetipark/%EC%9B%90%ED%8B%B0%EB%93%9C-%ED%94%84%EB%A6%AC%EC%98%A8%EB%B3%B4%EB%94%A9-%EB%B0%B1%EC%97%94%EB%93%9C-%EC%9D%B8%ED%84%B4%EC%8B%AD-7th-231113-til
- Tags: 백엔드, til, nodejs, nestjs, 원티드, github, 프리온보딩

---

### 1️⃣ 할당된 업무에 대한 진행상황.
`in progress` : 예산 및 지출 관련 API 작성 중  
`done` : 프로젝트 구조 설계, 사용자 회원가입 및 로그인, 카테고리 API 완료

### 2️⃣ 진행한 작업에 대한 리뷰 및 커밋한 내용 리뷰진행.
- 예산 생성 관련 생성(수정)을 json 배열 형식으로 요청 받아 진행하였는데, 이 방식이 괜찮은 지에 대한 고민해보았습니다.
```typescript
[
	{
		"categoryID": 1,
		"amount": 400000
	},
	{
		"categoryID": 3,
		"amount": 200000
	}
]
```
- 아래 요구사항을 변경 구상하고 있는데, 요구사항을 변경할 지 그대로 구현할 지 고민하고 있습니다!
> - 자동 생성된 예산은, 기존 이용중인 `유저` 들이 설정한 평균 값 입니다.  
>     - 유저들이 설정한 카테고리 별 예산을 통계하여, 평균적으로 40% 를 `식비`에, 30%를 `주거` 에 설정 하였다면 이에 맞게 추천.  
>     - 10% 이하의 카테고리들은 모두 묶어 `기타` 로 제공한다.(8% 문화, 7% 레져 라면 15% 기타로 표기)  
>     - 위 비율에 따라 금액이 입력됩니다.  
- 기존 이용 중인 사용자들이 설정한 평균 비율 값이 사용자가 원하는 예산 설계에 적절하지 않을 수 있다고 생각함
    - 사용자 총 예산과 근접한 다른 사용자 10명의 카테고리 별 예산 목록을 가져오는 것이 좀 더 참고하기 좋다 생각함



### 3️⃣ Today I Learned
- Entity에서 Join된 Relation Entity의 Column을 찾을 때 아래와 같이 조건문으로 접근해서 찾는 방식에 대해 이해할 수 있었음.
```typescript
@Entity('users')
@Unique(['username'])
export class User {
  @PrimaryGeneratedColumn()
  id: number;
	...
  @OneToMany(() => Budget, (budget) => budget.user)
  budgets: Budget[];
}
```
```typescript
@Entity('budget')
export class Budget {
	...
  @ManyToOne(() => User, (user) => user.budgets, {
    onDelete: 'CASCADE',
  })
  @JoinColumn({ name: 'user_id' })
  user: User;
}
```
```typescript
  /** id의 사용자 예산 정보 반환
   * @return Budget[]
   */
  getBudgetsByUser(id: number): Promise<Budget[]> {
    return this.budgetRepository.find({
      where: { user: { id: id } },
      relations: ['user', 'category'],
    });
  }
```

### 📁 수행 기업 과제 Repository
- [[ 돈이머니 ] 예산 관리 서비스 RESTful API 서버💰, laetipark, github](https://github.com/laetipark/money-is-money)
