33 lines
1.2 KiB
SQL
33 lines
1.2 KiB
SQL
-- Initialize database schema for realtime collaboration
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TABLE IF NOT EXISTS documents (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
name VARCHAR(255) NOT NULL,
|
|
type VARCHAR(50) NOT NULL CHECK (type IN ('editor', 'kanban')),
|
|
yjs_state BYTEA,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_documents_type ON documents(type);
|
|
CREATE INDEX idx_documents_created_at ON documents(created_at DESC);
|
|
|
|
-- Optional: Table for storing incremental updates (for history)
|
|
CREATE TABLE IF NOT EXISTS document_updates (
|
|
id SERIAL PRIMARY KEY,
|
|
document_id UUID NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
|
|
update BYTEA NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_updates_document_id ON document_updates(document_id);
|
|
CREATE INDEX idx_updates_created_at ON document_updates(created_at DESC);
|
|
|
|
-- Insert some sample documents for testing
|
|
INSERT INTO documents (id, name, type) VALUES
|
|
('00000000-0000-0000-0000-000000000001', 'Welcome Document', 'editor'),
|
|
('00000000-0000-0000-0000-000000000002', 'Project Kanban', 'kanban')
|
|
ON CONFLICT DO NOTHING;
|