[Dev] supabase 사용자 타입 정의

조수현·2025년 10월 4일

들어가기

항상 수퍼베이스 쓰면서 아 일단 넘어가 하고 안 찾아 보고 지나 갔던 타입 정의 입니다

참고

supabase 기본 타입

  • supabase에는 다양한 타입이 있습니다
  • int, float, timestamp에도 여러 가지 타입을 제공합니다
  • 다만 테이블을 정의하는 화면에서 그 어떤 커스텀 타입에 대한 실마리를 제공하지 않습니다 ㅡㅡ
  • 찾아 보면 있을 거라고 생각했지만 그냥 안 된다고 생각하고 싶었던 것 같습니다 ㅎ
  • 당시에 sql로 생성해야만 할 것 같아서 피했던 것도 있고,,, 그거 찾느라 시간 쓰고 싶지 않았던 것 같기도 합니다

사용자 정의 타입

  • 제가 하는 프로젝트의 데이터 중 하나의 타입 입니다

interface Routine  {
	id: uuid;
  	title: string;
	period: 'day' | 'week' | 'month'
}
  • 여기서 봐야할 건 period 타입!
  • supabase에서 처음에는 text타입으로 정의 했으나
  • 그 타입을 클라이언트에서 정의하지 않고 supabase 라이브러리에서 가져와서 쓰는 게 훨씬 깔끔하다고 생각되었습니다

공식 문서,,,

  • 제가 첨부한 공식문서 타입 부분에서는 별 말이 없어서,,,,
  • 없는 줄 알았는데 찾아보니까 enum 타입 관리 여기에 나와있습니다
  • 이거 찾기 전에 이것 저것 눌러보다가 발견하긴 했습니다,,, 잘 볼 걸

사용자 정의 타입 생성

  • 아래 이미지와 같이 Database > Enumerated Types로 가시면 됩니다
  • 여태 딱히 저길 보질 않았던 것 같아요; 트리거까지 만졌으면서

++ 글 쓰면서 발견한 것ㅠㅠ

  • 테이블을 생성할 때는 enum 타입 정의에 대한 안내가 없지만 테이블 수정 시에는 아래 이미지와 같이 생성 버튼이 있네요

  • 테이블 생성할 때 컬럼 정의에는 없음...

period 타입 만들기

  • 위의 경로로 들어가서 create type버튼을 누릅니다

  • 제가 필요한 타입을 작성해 줍니다

  • Edit column으로 들어가서 타입을 수정해 줍니다.

  • 타입 목록에 방금 생성한 period타입을 확인할 수 있습니다.

  • period 타입으로 변경하면 컬럼 정보가 아래와 같이 보이게 됩니다!

객체 타입

  • type에서 jsonb를 선택해 줍니다

  • supabase내의 대시보드에서 데이터를 추가할 시, 아래와 같이 데이터 편집창이 주어져 json으로 객체 데이터를 작성할 수 있도록 합니다

json과 jsonb 차이

  • json
    • json을 변형하지 않고 텍스트 그대로 저장
    • 데이터로서 보기 위해 파싱 필요
  • jsonb
    • 바이너리로 분해하고 공백 제거 등 텍스트를 정제해 저장
    • 파싱 없이 데이터 바로 확인 가능, 인덱싱(검색) 가능

💡 텍스트 그대로 저장이 필요한 것이 아니라면 jsonb를 권장

  • 타입에서 json 선택 시, supabase에서 나오는 알림창

배열 타입

  • 배열타입은 Define as Array라는 타입을 체크해 주면 된다

  • 아래 타입 컬럼과 같이 넣을 수 있다

  • json과 마찬가지로 대시보드에서는 string 타입으로 작성해서 넣어야 한다

  • enummerated type과 같이 사용할 수 있으므로 다양한 배열타입 가능!

마무리

교훈: 꼼꼼히 확인 하자! 공식 문서 잘 읽자!

  • 아 저는 sql문으로 만들 생각에 짧지만 어렵고 도움이 되는 글이 되겠군 하고 시작했는데
  • 생각보다 저 빼고 다들 잘 알고 계셨을 거 같아서 민망합니다 ^_^ㅋ
  • 그치만 누군가에겐 도움이 되길 바라며,,~
profile
프론트엔드 개발 블로그

1개의 댓글

comment-user-thumbnail
2026년 3월 14일

enum이 수파베이스에 있는 줄 몰랐네요. 꿀팁 감사합니다

답글 달기