-- PostgreSQL 데이터베이스 및 테이블 생성 스크립트
-- 작성일: 2024년
-- 목적: researchqa 프로젝트용 데이터베이스 설정

-- 1. woonglab 사용자 생성 (이미 존재할 경우 무시)
DO $$
BEGIN
    IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'woonglab') THEN
        CREATE USER woonglab WITH PASSWORD '!@#woonglab';
    END IF;
END
$$;

-- 2. researchqa 데이터베이스 생성 (이미 존재할 경우 무시)
SELECT 'CREATE DATABASE researchqa OWNER woonglab'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'researchqa')\gexec

-- 3. researchqa 데이터베이스에 대한 권한 부여
GRANT ALL PRIVILEGES ON DATABASE researchqa TO woonglab;

-- 4. researchqa 데이터베이스에 연결하여 테이블 생성
\c researchqa;

-- 5. files 테이블 생성 (main.py와 일치)
CREATE TABLE uploaded_file (
    id SERIAL PRIMARY KEY,
    filename VARCHAR(255) NOT NULL,
    file_path VARCHAR(500) NOT NULL,
    status VARCHAR(10) NOT NULL,
    upload_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    deleted_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 6. user_log 테이블 생성
CREATE TABLE IF NOT EXISTS user_log (
    id SERIAL PRIMARY KEY,
    question TEXT NOT NULL,
    answer TEXT NOT NULL,
    like_count INTEGER DEFAULT 0,
    dislike_count INTEGER DEFAULT 0,
    ip VARCHAR(45),
    reg_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 7. woonglab 사용자에게 테이블 권한 부여
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO woonglab;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO woonglab;

-- 8. 생성된 테이블 확인
\dt

-- 9. 테이블 구조 확인
\d files
\d user_log

-- 스크립트 실행 완료 메시지
SELECT 'Database setup completed successfully!' as message;
