34 lines
1.3 KiB
SQL
34 lines
1.3 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
CREATE TABLE IF NOT EXISTS scanned_media_roots (
|
|
media_folder_id INTEGER NOT NULL REFERENCES media_folders(id) ON DELETE CASCADE,
|
|
root_path TEXT NOT NULL,
|
|
state TEXT NOT NULL DEFAULT 'resolved',
|
|
inferred_type TEXT NOT NULL DEFAULT 'movie',
|
|
type_confidence TEXT NOT NULL DEFAULT 'low',
|
|
title TEXT NOT NULL DEFAULT '',
|
|
year INTEGER NOT NULL DEFAULT 0,
|
|
tmdb_id TEXT NOT NULL DEFAULT '',
|
|
imdb_id TEXT NOT NULL DEFAULT '',
|
|
tvdb_id TEXT NOT NULL DEFAULT '',
|
|
observed_file_count INTEGER NOT NULL DEFAULT 0,
|
|
sample_file_path TEXT NOT NULL DEFAULT '',
|
|
evidence_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
override_source TEXT NOT NULL DEFAULT 'none',
|
|
first_seen_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
last_seen_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (media_folder_id, root_path)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_scanned_media_roots_state_last_seen
|
|
ON scanned_media_roots (media_folder_id, state, last_seen_at DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_scanned_media_roots_type_last_seen
|
|
ON scanned_media_roots (media_folder_id, inferred_type, last_seen_at DESC);
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
DROP TABLE IF EXISTS scanned_media_roots;
|
|
-- +goose StatementEnd
|