✨ 주요 개선사항: - PDF API 500 에러 수정 (한글 파일명 UTF-8 인코딩 처리) - PDF 뷰어 기능 완전 구현 (PDF.js 통합, 네비게이션, 확대/축소) - 서적별 문서 그룹화 UI 데본씽크 스타일로 개선 - PDF Manager 페이지 서적별 보기 기능 추가 - Alpine.js 로드 순서 최적화로 JavaScript 에러 해결 🎨 UI/UX 개선: - 확장/축소 가능한 아코디언 스타일 서적 목록 - 간결하고 직관적인 데본씽크 스타일 인터페이스 - PDF 상태 표시 (HTML 연결, 서적 분류) - 반응형 디자인 및 부드러운 애니메이션 🔧 기술적 개선: - PDF.js 워커 설정 및 토큰 인증 처리 - 서적별 PDF 자동 그룹화 로직 - Alpine.js 컴포넌트 초기화 최적화
51 lines
1.7 KiB
PL/PgSQL
51 lines
1.7 KiB
PL/PgSQL
-- 서적 테이블 및 관계 추가
|
|
-- 2025-08-22: 서적 그룹화 기능 추가
|
|
|
|
-- 서적 테이블 생성
|
|
CREATE TABLE IF NOT EXISTS books (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
title VARCHAR(500) NOT NULL,
|
|
author VARCHAR(200),
|
|
publisher VARCHAR(200),
|
|
isbn VARCHAR(20) UNIQUE,
|
|
description TEXT,
|
|
language VARCHAR(10) DEFAULT 'ko',
|
|
total_pages INTEGER DEFAULT 0,
|
|
cover_image_path VARCHAR(500),
|
|
is_public BOOLEAN DEFAULT true,
|
|
tags VARCHAR(1000),
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP WITH TIME ZONE
|
|
);
|
|
|
|
-- 인덱스 생성
|
|
CREATE INDEX IF NOT EXISTS idx_books_title ON books(title);
|
|
CREATE INDEX IF NOT EXISTS idx_books_author ON books(author);
|
|
CREATE INDEX IF NOT EXISTS idx_books_created_at ON books(created_at);
|
|
|
|
-- documents 테이블에 book_id 컬럼 추가
|
|
ALTER TABLE documents ADD COLUMN IF NOT EXISTS book_id UUID;
|
|
|
|
-- 외래키 제약조건 추가
|
|
ALTER TABLE documents ADD CONSTRAINT IF NOT EXISTS fk_documents_book_id
|
|
FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE SET NULL;
|
|
|
|
-- book_id 인덱스 생성
|
|
CREATE INDEX IF NOT EXISTS idx_documents_book_id ON documents(book_id);
|
|
|
|
-- 업데이트 트리거 함수 생성 (updated_at 자동 업데이트)
|
|
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
RETURN NEW;
|
|
END;
|
|
$$ language 'plpgsql';
|
|
|
|
-- books 테이블에 업데이트 트리거 추가
|
|
DROP TRIGGER IF EXISTS update_books_updated_at ON books;
|
|
CREATE TRIGGER update_books_updated_at
|
|
BEFORE UPDATE ON books
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_updated_at_column();
|