24 lines
1.1 KiB
SQL
24 lines
1.1 KiB
SQL
ALTER TABLE pieces ADD COLUMN research_text TEXT NOT NULL DEFAULT '';
|
|
ALTER TABLE pieces ADD COLUMN revision INTEGER NOT NULL DEFAULT 1 CHECK (revision >= 1);
|
|
ALTER TABLE pieces ADD COLUMN archived_from_status TEXT CHECK (
|
|
archived_from_status IS NULL OR archived_from_status IN ('inbox', 'preparing', 'ready')
|
|
);
|
|
|
|
CREATE TABLE piece_media (
|
|
id TEXT PRIMARY KEY,
|
|
piece_id TEXT NOT NULL REFERENCES pieces(id) ON DELETE CASCADE,
|
|
storage_name TEXT NOT NULL UNIQUE,
|
|
original_name TEXT NOT NULL,
|
|
mime_type TEXT NOT NULL CHECK (mime_type IN ('image/jpeg', 'image/png', 'image/webp', 'image/gif')),
|
|
byte_size INTEGER NOT NULL CHECK (byte_size > 0 AND byte_size <= 5242880),
|
|
alt_text TEXT NOT NULL DEFAULT '',
|
|
position INTEGER NOT NULL CHECK (position >= 0),
|
|
created_at_utc TEXT NOT NULL,
|
|
UNIQUE (piece_id, position)
|
|
);
|
|
|
|
CREATE INDEX idx_piece_media_piece ON piece_media(piece_id, position);
|
|
CREATE INDEX idx_piece_topics_topic ON piece_topics(topic_id, piece_id);
|
|
CREATE INDEX idx_piece_categories_category ON piece_category_suggestions(category_id, piece_id);
|
|
CREATE INDEX idx_piece_sources_piece ON piece_sources(piece_id, position);
|