Files
silo-server/migrations/sql/015_admin_smart_collections.sql
T

46 lines
1.6 KiB
SQL
Raw Normal View History

-- +goose Up
-- +goose StatementBegin
2026-05-22 20:26:11 -04:00
ALTER TABLE library_collections
ADD COLUMN collection_mode TEXT NOT NULL DEFAULT 'manual',
ADD COLUMN query_definition JSONB NOT NULL DEFAULT '{}'::jsonb,
ADD COLUMN sort_config JSONB NOT NULL DEFAULT '{}'::jsonb;
CREATE TABLE library_collection_libraries (
collection_id TEXT NOT NULL,
library_id INTEGER NOT NULL,
PRIMARY KEY (collection_id, library_id),
CONSTRAINT library_collection_libraries_collection_id_fkey
FOREIGN KEY (collection_id) REFERENCES library_collections(id) ON DELETE CASCADE,
CONSTRAINT library_collection_libraries_library_id_fkey
FOREIGN KEY (library_id) REFERENCES media_folders(id) ON DELETE CASCADE
);
INSERT INTO library_collection_libraries (collection_id, library_id)
SELECT id, library_id
FROM library_collections
ON CONFLICT (collection_id, library_id) DO NOTHING;
CREATE INDEX idx_library_collection_libraries_library
ON library_collection_libraries (library_id, collection_id);
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
UPDATE library_collections lc
SET library_id = lcl.library_id
FROM (
SELECT DISTINCT ON (collection_id) collection_id, library_id
FROM library_collection_libraries
ORDER BY collection_id, library_id
) lcl
WHERE lc.id = lcl.collection_id;
DROP INDEX IF EXISTS idx_library_collection_libraries_library;
DROP TABLE IF EXISTS library_collection_libraries;
ALTER TABLE library_collections
DROP COLUMN IF EXISTS sort_config,
DROP COLUMN IF EXISTS query_definition,
DROP COLUMN IF EXISTS collection_mode;
-- +goose StatementEnd