Files
silo-server/migrations/sql/118_user_collection_imports.sql

41 lines
1.7 KiB
SQL

-- +goose Up
-- +goose StatementBegin
-- Allow personal user collections to act as TMDB/Trakt/MDBList imports.
--
-- Mirrors the source/sync columns we already keep on library_collections so a
-- profile-owned collection can store its source preset, last sync state, and a
-- cron schedule. Items continue to live in user_personal_collection_items and
-- are replaced by the user-collection sync service on each run.
ALTER TABLE user_personal_collections
ADD COLUMN IF NOT EXISTS description TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS source_url TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS source_config JSONB NOT NULL DEFAULT '{}'::jsonb,
ADD COLUMN IF NOT EXISTS sync_schedule TEXT,
ADD COLUMN IF NOT EXISTS next_sync_at TIMESTAMPTZ,
ADD COLUMN IF NOT EXISTS last_sync_at TIMESTAMPTZ,
ADD COLUMN IF NOT EXISTS last_sync_status TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS last_sync_message TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS item_count INTEGER NOT NULL DEFAULT 0;
CREATE INDEX IF NOT EXISTS idx_user_collections_next_sync_due
ON user_personal_collections (next_sync_at)
WHERE sync_schedule IS NOT NULL AND next_sync_at IS NOT NULL;
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP INDEX IF EXISTS idx_user_collections_next_sync_due;
ALTER TABLE user_personal_collections
DROP COLUMN IF EXISTS item_count,
DROP COLUMN IF EXISTS last_sync_message,
DROP COLUMN IF EXISTS last_sync_status,
DROP COLUMN IF EXISTS last_sync_at,
DROP COLUMN IF EXISTS next_sync_at,
DROP COLUMN IF EXISTS sync_schedule,
DROP COLUMN IF EXISTS source_config,
DROP COLUMN IF EXISTS source_url,
DROP COLUMN IF EXISTS description;
-- +goose StatementEnd