게시판 기능을 위해 Supabase 연동하기
현재 기능이 만들어져 있지만 supabase에서 테이블을 생성해야 board(게시판) 기능 사용이 가능합니다.
따라서, supabase에서 테이블을 생성하는 방법을 알아보겠습니다.
1. 테이블 구조 설계
posts 테이블은 다음과 같은 컬럼들로 구성됩니다:
id
: 게시글 고유 식별자 (Primary Key)title
: 게시글 제목content
: 게시글 내용user_id
: 작성자 ID (auth.users 테이블 참조)created_at
: 생성 시간updated_at
: 수정 시간views
: 조회수
2. SQL 쿼리로 테이블 생성하기
Supabase SQL 편집기에서 다음 쿼리를 실행합니다:
create table posts (
id bigint generated by default as identity primary key,
title text not null,
content text not null,
user_id uuid references auth.users not null,
user_email text not null,
user_metadata jsonb default '{}'::jsonb,
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
updated_at timestamp with time zone default timezone('utc'::text, now()) not null,
views integer default 0,
constraint valid_email check (user_email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')
);
-- RLS(Row Level Security) 정책 설정
alter table posts enable row level security;
-- 누구나 읽기 가능
create policy "Posts are viewable by everyone" on posts
for select using (true);
-- 인증된 사용자만 생성 가능
create policy "Users can create posts" on posts
for insert with check (auth.uid() = user_id);
-- 작성자만 수정 가능
create policy "Users can update own posts" on posts
for update using (auth.uid() = user_id);
-- 작성자만 삭제 가능
create policy "Users can delete own posts" on posts
for delete using (auth.uid() = user_id);
3. RLS 정책 설명
- 읽기 정책:
true
조건을 사용하여 모든 사용자가 모든 게시글을 볼 수 있도록 합니다. - 생성 정책:
auth.uid()
가user_id
와 일치하는 경우에만 게시글 작성을 허용합니다. - 수정 정책: 게시글 작성자만 자신의 게시글을 수정할 수 있습니다.
- 삭제 정책: 게시글 작성자만 자신의 게시글을 삭제할 수 있습니다.
이렇게 설정하면 기본적인 게시판 기능을 위한 데이터베이스 구조가 완성됩니다.
이제 애플리케이션에서 이 테이블을 활용하여 /board
페이지에서 CRUD 작업을 수행할 수 있습니다.