[Team Project] 뉴스피드 제작기 day3

레이나·2025년 2월 14일

프로젝트

목록 보기
8/15
post-thumbnail

[25.02.14 금요일]

🤝 정말 협업

  • 혼자서 사용하던 깃허브를 공통으로 사용하면서 브랜치전략에 대해서 체감하는 중.
  • 협업 과정중의 pull, push, Conflict, rebase, merge 방법등을 실제 사용해보고 겪어보니 진짜협업이구나.
  • 내가 제작하지도 않은 페이지가완성되고 있다.
  • 나에게 코드리뷰와 merge권한이 생기다.
  • 작업 과정중의 의사 소통.
  • 공통셋팅 룰은 계속해서 새로새로 생긴다. 처음에 잘 정해두자.
  • supabase 그녀석!

🌿 첫 DB활용 프로젝트

  • 팀플 같은 팀플을 처음하는 중인데, DB를 사용하라는 지령이 내려졌다.
  • 수파베이스를 사용하여 DB기반으로 CRUD구성.
  • DB도 처음 사용해 보고, 셋팅하고, P.K와 F.K구분 잘해서 정의하기.
  • 속성값 설정.
  • auth.users -> public.users 저장하기(트리거 활용)

트리거 함수(sql)

가장 큰 고비중 하나였던 트리거!
회원가입할때 기본 email, password는 auth 스키마의 users로 자동으로 저장되지만, public스키마에 설정한 우리의 커스텀 테이블과는 관계형으로 이용하기가 힘들다. 개인정보가 저장되는 부분이기 때문이다.
그래서 public 스키마에 users 테이블을 추가하여 auth.users의 값을 일부 넣어줘야 하는데 생각대로 되지 않아았다.
어제 만든 회원가입 페이지에서 테스트중인데 auth.users에만 값이 저장이 되고 public.users에는 저장이 되지 않아 한참을 찾았다.
강의 도중에 "트리거" 함수를 추가해야 한다고해서 찾아보았는데, ?? 내가 생각한 리액트 함수가 아닌 sql함수였던 것이다.
당황했다. 튜터님들도 구체적으로 알려주지 않고 찾아서 해보라고만 이야기해서.. 일단 진행..20분, 30분... 과제 진행 기간이 짧기 때문에 더이상은 고민하지 못하고 튜터님을 찾아가려했는데!!
다행히도 팀에 DB를 유경험자가 있어서 여기서 진행이 거의 막힐 상황이었는데 구세주 처럼 등장!! 생각보다는 수월하게 해결!

추가하는 트리거에 대해서만 참고용으로 기록

DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users;
DROP FUNCTION IF EXISTS public.handle_new_user;

CREATE FUNCTION public.handle_new_user()
RETURNS TRIGGER AS $$
BEGIN
  INSERT INTO public.users(user_id, email, name, nickname, created_at)
  VALUES (
    NEW.id,
    NEW.email,
    COALESCE(NEW.raw_user_meta_data->>'name', 'default_name'), -- NULL 방지
    COALESCE(NEW.raw_user_meta_data->>'nickname', 'default_nickname'),
    NEW.created_at
  )
  ON CONFLICT (user_id) DO NOTHING;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;

CREATE TRIGGER on_auth_user_created
AFTER INSERT ON auth.users
FOR EACH ROW
EXECUTE FUNCTION public.handle_new_user();

테스트해서 정상적으로 자료가 저장이 되는 것을 확인했다.
나중에 이걸 다시 사용하려고 할때 수정해서 사용해봐야지.
그리고 공식문서도 계속 읽어면서 앞으로의 코드를 짜야겠다.
공식문서를 참조하지 않으면 js에서 사용이 매우 힘들겠다 라고 느꼈다.
내일은 공식문서 확인하면서 코딩해보자!!

https://supabase.com/docs/reference/javascript/start?queryGroups=platform&platform=yarn

profile
one setp

0개의 댓글