-- Todo Project 데이터베이스 초기화
-- 사용자 및 데이터베이스 생성

-- 데이터베이스가 존재하지 않으면 생성
SELECT 'CREATE DATABASE todo_db'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'todo_db')\gexec

-- 사용자가 존재하지 않으면 생성
DO
$do$
BEGIN
   IF NOT EXISTS (
      SELECT FROM pg_catalog.pg_roles
      WHERE  rolname = 'todo_user') THEN

      CREATE ROLE todo_user LOGIN PASSWORD 'todo_password';
   END IF;
END
$do$;

-- 권한 부여
GRANT ALL PRIVILEGES ON DATABASE todo_db TO todo_user;

-- todo_db에 연결
\c todo_db

-- 스키마 권한 부여
GRANT ALL ON SCHEMA public TO todo_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO todo_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO todo_user;

-- 기본 권한 설정
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO todo_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO todo_user;
