Oppretter tabellen som lagrer transkripsjons-segmenter med tidsstempler. Master-kopi for alle transkripsjoner — SRT og ren tekst er avledede formater. Inkluderer GIN-indeks for norsk fulltekstsøk og unik constraint per kjøring. Ref: docs/concepts/podcastfabrikken.md § 3 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
26 lines
1.1 KiB
SQL
26 lines
1.1 KiB
SQL
-- Migration 005: Transkripsjonssegmenter
|
|
-- Ref: docs/concepts/podcastfabrikken.md § 3
|
|
--
|
|
-- Master-kopi av alle transkripsjoner. SRT og ren tekst er avledede
|
|
-- eksportformater som genereres fra denne tabellen.
|
|
-- Universell for all lyd: podcast, møter, voice memos.
|
|
|
|
CREATE TABLE transcription_segments (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
node_id UUID NOT NULL REFERENCES nodes(id) ON DELETE CASCADE,
|
|
transcribed_at TIMESTAMPTZ NOT NULL, -- grupperer segmenter fra samme kjøring
|
|
seq INT NOT NULL,
|
|
start_ms INT NOT NULL,
|
|
end_ms INT NOT NULL,
|
|
content TEXT NOT NULL,
|
|
edited BOOLEAN DEFAULT false,
|
|
|
|
UNIQUE (node_id, transcribed_at, seq)
|
|
);
|
|
|
|
-- Hovedindeks for oppslag: hent segmenter for en node, sortert
|
|
CREATE INDEX idx_segments_node ON transcription_segments (node_id, transcribed_at, seq);
|
|
|
|
-- Fulltekstsøk på tvers av transkripsjoner (norsk)
|
|
CREATE INDEX idx_segments_fts ON transcription_segments
|
|
USING gin(to_tsvector('norwegian', content));
|