오늘의 목표

더보기

✔️ 스탠다드반 수업

✔️ 개인 과제 마무리

✔️ 데이터 베이스개념, 인증, 인가 특강

✔️ 챌린지반 수업


⏱️ 오늘의 일정

10:00 - 11:00 - 스탠다드 반 수업
11:00 ~ 12:00 - 개인 과제 마무리
 

12:00 ~ 13:00 - 개인 과제 다듬기

13:00 ~ 14:00 - 점심시간

14:00 ~ 16:00 - 데이터 베이스개념, 인증, 인가 특강

16:00 ~ 18:00 - 개인 과제 다듬기

18:00 ~ 19:00 - 저녁시간

19:00 ~ 20:00 - 챌린지반 수업20:00 ~ 21:00 - 팀원 코드 리뷰


📜 스탠다드 반 수업

10:00 - 11:00 - 스탠다드 반 수업

 

오늘 수업은 발제자분들의 발표로만 이루어졌다.

OSI 7계층 중 3계층인 네트워크 계층에 대한 주제로 발표가 시작되었다.

 

 

📜 개인 과제 마무리

11:00 - 12:00 - 개인과제 마무리

 

 

길고 길었던 개인과제를 마무리했다.

개인과제를 마무리하고 미처 구현하지 못했던 기능들도 구현해 추가로 제출했다.

 

아이템 구입할때 발견하지 못했던 부분을 발견해서 버그를 수정했다.

 

 

 

 // 캐릭터의 인벤토리를 찾는다.
 const chracterInventory = await prisma.inventory.findFirst({
     where: {
         characterId: character.characterId
     }
 });
 
 // 인벤토리에서 비어있는 공간을 찾는다.
 const emptyInventoryItem = await prisma.inventoryItem.findFirst({
     where: {
         inventoryId: chracterInventory.inventoryId,
         itemId : 0
     }
 });

 // 비어있는 공간에 아이템을 넣는다.
 await prisma.inventoryItem.update({
     where: {
         inventoryItemIndex: emptyInventoryItem.inventoryItemIndex,
         inventoryId : chracterInventory.inventoryId
     },
     data: {
         itemId: searchItem.itemId,
         inventoryItemCount: count
     }
 })

 

위 코드는 아이템을 구입하고 인벤토리에 넣을 때, 인벤토리에서 빈 공간을 찾은 후 해당 공간에 아이템을 넣는 코드다.

비어있는 공간에 아이템을 넣는 부분의 로직은 다음과 같다.

 

인벤토리 아이템을 업데이트 하는데, 인벤토리 아이템의 위치값이 위에서 찾은 비어있는 공간의 아이템의 위치값과 같고,해당 인벤토리 아이템이 캐릭터가 소유하고 있는 인벤토리일 경우,해당 인벤토리 아이템의 아이템 코드와 개수를 업데이트 한다.

 

이처럼 구성을하고 실행을 하니 에러가 났다.

 

 

에러 내용을 살펴보니 inventoryitemId를 활용하라는 의미의 버그였다.

생각해봐도 왜 굳이 저거를 써야할까..?

로우 쿼리 자체가 문제가 되는가 싶어서 MySQL Workbench에서 위 로직으로 쿼리를 짜서 실행해보니 문제 없이 실행됐다.

 

Prisma 자체의 문제인가 싶어서 튜터님에게 찾아가 문의를 하니, Prisma에서는 PK로 설정한 값을 활용해 where문을 작성해야한다는 말을 들었다.

 // 비어있는 공간을 찾는다.
 const emptyInventoryItem = await prisma.inventoryItem.findFirst({
     where: {
         inventoryId: chracterInventory.inventoryId,
         itemId: 0
     }
 });

// 비어있는 공간에 아이템을 넣는다.
await prisma.inventoryItem.update({
    where: {
        inventoryItemId: emptyInventoryItem.inventoryItemId                    
    },
    data: {
        itemId: searchItem.itemId,
        inventoryItemCount: count
    }
});

 

그래서 위처럼 수정을 했다.

 

인벤토리 아이템을 업데이트 하는데,

인벤토리 아이템의 ID 값이 비어있는 아이템의 ID 값이 같은 대상을 찾고,

해당 인벤토리 아이템의 아이템 코드와 개수를 업데이트한다.

 

이처럼 구성을하고 실행을 하니 깔끔하게 업데이트가 되었다.

위처럼 구성하는 것이 기본적인 방법이라고 튜터님에게서 조언을 받았다.

기본 ID 값을 활용해 업데이트 하는 방식으로 SQL 쿼리를 만들어야겠다.

 

📜 데이터베이스 개념, 인증 인가 특강

14:00 ~ 16:00 - 데이터 베이스개념, 인증, 인가 특강

 

앞서 노드 강의에서 배운 데이터베이스의 개념과 인증, 인가에 정리 차원에서 특강 수업이 있어서 들었다.

 

📜 챌린지반 수업

19:00 - 20:00 - 챌린지 반 수업

 

매주 화 목 진행하는 챌린지반 수업에 참여했다.

이번 강의에서는 RDBMS에 대한 개념을 주제로 해서 수업이 이루어졌다. 

중간 중간 쿼리에 대한 문제를 내주고 푸는 짧은 문제 풀이 시간도 있었다.

 

📜 팀원 코드 리뷰

20:00 - 21:00 - 팀원 코드 리뷰

 

20시 부터 팀원 코드 리뷰 시간이 있어서 참여했다.

다른 분들의 코드를 보면서 의아한 부분은 질문하고, 도움이 될만한 부분을 발견해 많은 도움이 되었다.

 

https://dbdiagram.io/home

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

 

무료로 DB 다이어그램을 구성할 수 있는 사이트를 공유 받아서 앞으로 자주 이용해야겠다.

 

🌙 하루를 마치며

오늘로 개인과제가 마무리 되었다.

9월 13일 오전 10시에 팀 과제 발제가 있다고 공지를 받았다.

어떤 문제가 나올지 기대되고, 팀원 코드 리뷰를 하면서 팀 과제 분배를 어떻게 할지도 상의했다.

우선 지금 생각으로는 개인과제를 하며 발견한 router 단위로 분배를 하는법

아니면 어떤 큼직한 로직 담당으로 분배를 하는법 2가지 정도를 생각하고 의견을 나눴다.

 

최종으로는 팀 과제 발제를 듣고나서 적절하게 분배해 수행하는 것으로 이야기를 마루리햇다.

+ Recent posts