-- +goose Up -- Отпечатки файлов библиотеки для проверки дублей при загрузке (docs/uploads.md#4-проверка-на-дубли): -- полный SHA-256 — в media_files.sha256, акустический Chromaprint — здесь. ALTER TABLE media_files ADD COLUMN fingerprinted_at timestamptz; CREATE INDEX media_files_fingerprint_todo_idx ON media_files (id) WHERE fingerprinted_at IS NULL; CREATE TABLE track_fingerprints ( file_id uuid PRIMARY KEY REFERENCES media_files(id) ON DELETE CASCADE, duration_ms int NOT NULL, fingerprint int[] NOT NULL, -- raw-отпечаток fpcalc (uint32 как int4) fp_prefix bigint NOT NULL -- первые 64 бита — грубый индекс для отбора кандидатов ); CREATE INDEX track_fingerprints_prefix_idx ON track_fingerprints (fp_prefix); CREATE INDEX track_fingerprints_duration_idx ON track_fingerprints (duration_ms); -- +goose Down DROP TABLE track_fingerprints; DROP INDEX media_files_fingerprint_todo_idx; ALTER TABLE media_files DROP COLUMN fingerprinted_at;