73 lines
2.8 KiB
SQL
73 lines
2.8 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
ALTER TABLE media_folders
|
|
ADD COLUMN IF NOT EXISTS intro_detection_enabled boolean NOT NULL DEFAULT false;
|
|
|
|
ALTER TABLE media_files
|
|
ADD COLUMN IF NOT EXISTS intro_markers_source text,
|
|
ADD COLUMN IF NOT EXISTS intro_markers_confidence double precision,
|
|
ADD COLUMN IF NOT EXISTS intro_markers_algorithm text,
|
|
ADD COLUMN IF NOT EXISTS intro_markers_detected_at timestamp with time zone;
|
|
|
|
UPDATE media_files
|
|
SET intro_markers_source = markers_source,
|
|
intro_markers_confidence = markers_confidence
|
|
WHERE intro_start IS NOT NULL
|
|
AND intro_end IS NOT NULL
|
|
AND markers_source IS NOT NULL
|
|
AND intro_markers_source IS NULL;
|
|
|
|
CREATE TABLE IF NOT EXISTS media_intro_fingerprints (
|
|
media_file_id integer NOT NULL REFERENCES media_files(id) ON DELETE CASCADE,
|
|
file_hash text NOT NULL,
|
|
file_size bigint,
|
|
duration_seconds double precision NOT NULL,
|
|
window_start_seconds double precision NOT NULL DEFAULT 0,
|
|
window_end_seconds double precision NOT NULL,
|
|
algorithm_version integer NOT NULL,
|
|
config_hash text NOT NULL,
|
|
fingerprint_format text NOT NULL,
|
|
sample_duration_seconds double precision NOT NULL,
|
|
point_count integer NOT NULL,
|
|
points bytea NOT NULL,
|
|
created_at timestamp with time zone NOT NULL DEFAULT now(),
|
|
updated_at timestamp with time zone NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (media_file_id, algorithm_version, config_hash)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_media_intro_fingerprints_hash
|
|
ON media_intro_fingerprints (file_hash, algorithm_version, config_hash);
|
|
|
|
CREATE TABLE IF NOT EXISTS intro_season_analysis_state (
|
|
season_id text NOT NULL REFERENCES seasons(content_id) ON DELETE CASCADE,
|
|
media_folder_id integer NOT NULL REFERENCES media_folders(id) ON DELETE CASCADE,
|
|
analysis_group_key text NOT NULL,
|
|
algorithm_version integer NOT NULL,
|
|
config_hash text NOT NULL,
|
|
input_signature text NOT NULL,
|
|
episode_count integer NOT NULL,
|
|
file_count integer NOT NULL,
|
|
status text NOT NULL,
|
|
markers_written integer NOT NULL DEFAULT 0,
|
|
last_error text,
|
|
analyzed_at timestamp with time zone NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (season_id, media_folder_id, analysis_group_key, algorithm_version, config_hash)
|
|
);
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
DROP TABLE IF EXISTS intro_season_analysis_state;
|
|
DROP INDEX IF EXISTS idx_media_intro_fingerprints_hash;
|
|
DROP TABLE IF EXISTS media_intro_fingerprints;
|
|
|
|
ALTER TABLE media_files
|
|
DROP COLUMN IF EXISTS intro_markers_detected_at,
|
|
DROP COLUMN IF EXISTS intro_markers_algorithm,
|
|
DROP COLUMN IF EXISTS intro_markers_confidence,
|
|
DROP COLUMN IF EXISTS intro_markers_source;
|
|
|
|
ALTER TABLE media_folders
|
|
DROP COLUMN IF EXISTS intro_detection_enabled;
|
|
-- +goose StatementEnd
|