TIL

24. 06. 21 TIL

효ㄷi 2024. 6. 21. 16:34

드디어 프로젝트 하나가 또 끝이 났다...

 

우리 팀의 경우엔 객관적으로 봐도 너무 좋은 결과물이 나와서 

 

튜터님도 피드백 드릴 게 없다고 하셨는데 (얼대박)

 

팀원분들 모두가 꼼꼼하게 신경쓴 덕이라고 생각한다.

 


 

코드를 좀 자세히 뜯어볼 시간이 있으면 좋겠는데 그렇지 못할 것 같아서

 

일단 문제가 있었던 부분만 조금 정리해보려고 한다.

 

나같은 경우에는 수파베이스 다를 줄 모름 + 테일윈드 다룰 줄 모름 으로

 

시간이 짺꼼 걸렸는데 이 수파베이스 오류가 진짜 사람을 괴롭혔다. (외래키 연결 안 됨, 근데 다른 팀원이 하면 됨(?))

 

일단 테이블이 3개였고, 이리저리 연결이 되어 있어서 헷갈렸다.

 

테이블이 일단 장소, 유저, 이 두 개를 묶은 테이블 1 이렇게 3개였는데,

 

처음에 아~무 생각도 없이... 물론 헷갈려서였지만 

 

   if (posts.created_by === user.id) {
      alert('본인이 만든 모임에 참가 신청 할 수 없습니다');
      close();
      return;
    }

장소의 작성자, 유저의 아이디를 비교해서 본인이 만든 모임에 신청을 넣을 수 없도록 막는 코드였는데

 

황당쓰하게도 내가 created_by를 user_id로 적는 바람에 당연히 안 됐다 ㅋㅋ

 

아이디가 uuid라 자세히 봐야 같은지 다른지 알 수 있으므로...

 

나중에 수파베이스 테이블을 보다가 이상함을 감지하고 수정했다. . .

 

 

그 다음엔

   if (hasJoined) {
      alert('두 번 신청할 수 없습니다');
      close();
      return;
    }

두 번 신청하는 것을 막는 코드를 작성했다.

이것도 그냥 위처럼 비교하면 되겠지?~ 했는데 뭔가 헷갈려서... 뭔가 잘못된 것을 팀원분들이 알려주셔서 늦게 알았다.

 

이건 지피티로 해결했다. 시간도 촉박하고, 더이상 한계가 왔으므로... (허리가 지존 아팠다)

export const checkIfUserHasJoined = async (placeId, userId) => {
  const { data, error } = await supabase.from('Contracts').select('*').eq('place_id', placeId).eq('user_id', userId);
  if (error) {
    console.error(error.message);
    return false;
  }

  return data.length > 0;
};
 const { data: hasJoined } = useQuery({
    queryKey: ['checkUser', id, user?.id],
    queryFn: () => checkIfUserHasJoined(id, user?.id),
    enabled: !!user && !!id
  });

다행히 이렇게 해결... 이거 수정 못하면 어떡하나 했다.

지피티로 해결하는 데에도 시간이 꽤 걸렸다. 똑똑하긴 한데........

 

일단 나를 괴롭혔던 부분들만 작성하고 코드 뜯어보는 건 조금 여유가 생기면 해야겠다.