들어가기
항상 수퍼베이스 쓰면서 아 일단 넘어가 하고 안 찾아 보고 지나 갔던 타입 정의 입니다
참고
supabase 기본 타입
- supabase에는 다양한 타입이 있습니다
- int, float, timestamp에도 여러 가지 타입을 제공합니다
- 다만 테이블을 정의하는 화면에서 그 어떤 커스텀 타입에 대한 실마리를 제공하지 않습니다 ㅡㅡ
- 찾아 보면 있을 거라고 생각했지만 그냥 안 된다고 생각하고 싶었던 것 같습니다 ㅎ
- 당시에 sql로 생성해야만 할 것 같아서 피했던 것도 있고,,, 그거 찾느라 시간 쓰고 싶지 않았던 것 같기도 합니다
사용자 정의 타입
- 제가 하는 프로젝트의 데이터 중 하나의 타입 입니다
interface Routine {
id: uuid;
title: string;
period: 'day' | 'week' | 'month'
}
- 여기서 봐야할 건 period 타입!
- supabase에서 처음에는 text타입으로 정의 했으나
- 그 타입을 클라이언트에서 정의하지 않고 supabase 라이브러리에서 가져와서 쓰는 게 훨씬 깔끔하다고 생각되었습니다
공식 문서,,,
- 제가 첨부한 공식문서 타입 부분에서는 별 말이 없어서,,,,
- 없는 줄 알았는데 찾아보니까 enum 타입 관리 여기에 나와있습니다
- 이거 찾기 전에 이것 저것 눌러보다가 발견하긴 했습니다,,, 잘 볼 걸
사용자 정의 타입 생성
- 아래 이미지와 같이 Database > Enumerated Types로 가시면 됩니다
- 여태 딱히 저길 보질 않았던 것 같아요; 트리거까지 만졌으면서

++ 글 쓰면서 발견한 것ㅠㅠ
period 타입 만들기
-
위의 경로로 들어가서 create type버튼을 누릅니다

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

-
Edit column으로 들어가서 타입을 수정해 줍니다.
-
타입 목록에 방금 생성한 period타입을 확인할 수 있습니다.

-
period 타입으로 변경하면 컬럼 정보가 아래와 같이 보이게 됩니다!
객체 타입
json과 jsonb 차이
- json
- json을 변형하지 않고 텍스트 그대로 저장
- 데이터로서 보기 위해 파싱 필요
- jsonb
- 바이너리로 분해하고 공백 제거 등 텍스트를 정제해 저장
- 파싱 없이 데이터 바로 확인 가능, 인덱싱(검색) 가능
💡 텍스트 그대로 저장이 필요한 것이 아니라면 jsonb를 권장
- 타입에서 json 선택 시, supabase에서 나오는 알림창

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

-
아래 타입 컬럼과 같이 넣을 수 있다
-
json과 마찬가지로 대시보드에서는 string 타입으로 작성해서 넣어야 한다
-
enummerated type과 같이 사용할 수 있으므로 다양한 배열타입 가능!

마무리
교훈: 꼼꼼히 확인 하자! 공식 문서 잘 읽자!
- 아 저는 sql문으로 만들 생각에 짧지만 어렵고 도움이 되는 글이 되겠군 하고 시작했는데
- 생각보다 저 빼고 다들 잘 알고 계셨을 거 같아서 민망합니다 ^_^ㅋ
- 그치만 누군가에겐 도움이 되길 바라며,,~
enum이 수파베이스에 있는 줄 몰랐네요. 꿀팁 감사합니다