32 lines
1.2 KiB
SQL
32 lines
1.2 KiB
SQL
-- rBooks schema — community PDF library
|
|
-- Runs inside the `rbooks` schema (set by migration runner)
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TABLE IF NOT EXISTS books (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
slug TEXT NOT NULL UNIQUE,
|
|
title TEXT NOT NULL,
|
|
author TEXT,
|
|
description TEXT,
|
|
pdf_path TEXT NOT NULL,
|
|
pdf_size_bytes BIGINT DEFAULT 0,
|
|
page_count INTEGER DEFAULT 0,
|
|
tags TEXT[] DEFAULT '{}',
|
|
license TEXT DEFAULT 'CC BY-SA 4.0',
|
|
cover_color TEXT DEFAULT '#334155',
|
|
contributor_id TEXT,
|
|
contributor_name TEXT,
|
|
status TEXT NOT NULL DEFAULT 'published',
|
|
featured BOOLEAN DEFAULT FALSE,
|
|
view_count INTEGER DEFAULT 0,
|
|
download_count INTEGER DEFAULT 0,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_books_status ON books (status) WHERE status = 'published';
|
|
CREATE INDEX IF NOT EXISTS idx_books_slug ON books (slug);
|
|
CREATE INDEX IF NOT EXISTS idx_books_featured ON books (featured) WHERE featured = TRUE;
|
|
CREATE INDEX IF NOT EXISTS idx_books_created ON books (created_at DESC);
|