Supabase Edge Functions와 Drizzle 사용하기
새로운 Supabase 프로젝트 초기화하기
이 튜토리얼은 Supabase Edge Functions와 Drizzle ORM을 함께 사용하는 방법을 보여줍니다.
- Supabase CLI의 최신 버전이 설치되어 있어야 합니다.
- Drizzle ORM과 Drizzle kit이 설치되어 있어야 합니다. 다음 명령어를 실행하여 설치할 수 있습니다:
- 로컬 개발을 위해 Docker Desktop이 설치되어 있어야 합니다. 공식 문서를 참고하여 설치하세요.
로컬 머신에서 기본 Edge Function을 생성하고 배포하는 방법을 배우려면 Edge Functions 빠른 시작을 참고하세요.
로컬 머신의 폴더에 새로운 Supabase 프로젝트를 생성합니다:
이 명령어는 supabase
폴더와 config.toml
파일을 생성합니다:
Visual Studio Code를 사용한다면, Supabase 문서를 참고하여 Deno 설정을 구성하세요.
새로운 Edge Function 생성하기
새로운 Edge Function을 만들려면 supabase functions new [FUNCTION_NAME]
커맨드를 실행하세요:
이 명령어를 실행하면 supabase/functions
디렉토리에 함수 이름으로 된 새 폴더가 생성됩니다:
임포트 설정
supabase/functions
디렉토리에 import_map.json
파일을 생성하고 Drizzle ORM을 위한 임포트를 추가합니다:
더 자세한 내용은 공식 문서에서 확인할 수 있습니다.
테이블 생성하기
supabase/functions/common
디렉토리에 schema.ts
파일을 생성하고 테이블 스키마를 선언합니다:
이 코드는 users_table
이라는 테이블을 정의합니다. 테이블에는 id
, name
, age
, email
네 개의 컬럼이 있으며, 각 컬럼은 특정 타입과 제약 조건을 가지고 있습니다.
Drizzle 설정 파일 설정하기
Drizzle config는 Drizzle Kit에서 사용하는 설정 파일로, 데이터베이스 연결 정보, 마이그레이션 폴더, 스키마 파일 등에 대한 모든 정보를 담고 있습니다.
프로젝트 루트에 drizzle.config.ts
파일을 생성하고 다음 내용을 추가하세요:
이 튜토리얼에서는 Drizzle Kit을 사용해 스키마에 대한 마이그레이션을 생성할 것입니다.
마이그레이션 생성하기
drizzle-kit generate
명령어를 실행하여 마이그레이션을 생성합니다:
이 명령어는 supabase/migrations
디렉토리에 새로운 마이그레이션 파일을 생성합니다.
마이그레이션 적용하기
Supabase 로컬 개발 스택을 시작하고 마이그레이션을 적용하려면 다음 명령어를 실행하세요:
또는 지원되는 모든 드라이버에서 사용 가능한 migrate()
헬퍼를 사용해 마이그레이션을 적용할 수도 있습니다. 이 마이그레이션 과정에 대해 더 자세히 알아보려면 문서를 참고하세요.
Drizzle ORM을 데이터베이스에 연결하기
supabase/common
디렉토리에 db.ts
파일을 생성하고 데이터베이스 설정을 구성합니다:
SUPABASE_DB_URL
은 직접 데이터베이스 연결을 위한 기본 환경 변수입니다. Supabase Edge Functions에서 환경 변수를 관리하는 방법에 대해 더 알아보려면 문서를 참고하세요.
로컬에서 코드 테스트하기
로컬에서 함수를 테스트하려면 다음 커맨드를 실행하세요:
브라우저에서 해당 라우트(예: /drizzle-tutorial
)로 이동하면 다음과 같은 결과를 확인할 수 있습니다:
로컬 프로젝트를 호스팅된 Supabase 프로젝트에 연결하기
대시보드에서 새로운 Supabase 프로젝트를 생성하거나, 이 링크를 따라가면 됩니다.
Reference ID
를 복사한 후, 아래 명령어를 실행하여 로컬 개발 프로젝트를 호스팅된 Supabase 프로젝트에 연결할 수 있습니다:
스키마 변경 사항을 호스팅된 Supabase 프로젝트에 적용하려면 다음 명령어를 실행하세요:
환경 변수 설정하기
데이터베이스 설정 페이지로 이동한 후, Connection String
섹션에서 URI를 복사하세요. 데이터베이스에 연결할 때는 connection pooling
과 Transaction
모드를 사용해야 합니다. 비밀번호 자리 표시자를 실제 데이터베이스 비밀번호로 바꾸는 것을 잊지 마세요.
Connection Pooler에 대해 더 알아보려면 문서를 참고하세요.
환경 변수를 설정하려면 다음 커맨드를 실행하세요:
supabase/functions/common
디렉토리에 있는 db.ts
파일을 업데이트하여 DATABASE_URL
환경 변수를 사용하도록 수정하세요:
Supabase Edge Functions에서 환경 변수를 관리하는 방법에 대해 더 알아보려면 문서를 참고하세요.
여러분의 함수 배포하기
아래 명령어를 실행하여 함수를 배포할 수 있습니다:
배포가 완료되면, 배포된 프로젝트의 URL을 사용하여 생성한 라우트(예: /drizzle-tutorial
)로 이동해 엣지 함수에 접근할 수 있습니다.