You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
10 KiB
189 lines
10 KiB
-- Rename the Swedish schema to neutral English |
|
-- |
|
-- Generated by scripts/generate_rename_migration.py from _postgres/rename_map.py. |
|
-- Do not edit by hand; edit the map and regenerate. |
|
-- |
|
-- ALTER TABLE ... RENAME is catalog-only in PostgreSQL: no table rewrite, no data |
|
-- movement, no index rebuild. Wall time is milliseconds regardless of row count, |
|
-- and the HNSW vector indexes are not touched. |
|
-- |
|
-- Guarded by an existence check, so this is a no-op on a database created from the |
|
-- current schema.sql and does the work on one created before the rename. One file |
|
-- serves both a fresh install and an existing deployment. |
|
|
|
BEGIN; |
|
|
|
SET LOCAL lock_timeout = '5s'; |
|
SET LOCAL statement_timeout = 0; |
|
|
|
DO $rename$ |
|
BEGIN |
|
IF EXISTS (SELECT 1 FROM information_schema.columns |
|
WHERE table_schema = 'public' AND table_name = 'talks' |
|
AND column_name = 'anforandetext') THEN |
|
-- columns (still on their original tables) |
|
ALTER TABLE people RENAME COLUMN intressent_id TO person_id; |
|
ALTER TABLE people RENAME COLUMN hangar_id TO source_record_id; |
|
ALTER TABLE people RENAME COLUMN hangar_guid TO source_record_guid; |
|
ALTER TABLE people RENAME COLUMN sourceid TO source_id; |
|
ALTER TABLE people RENAME COLUMN fodd_ar TO birth_year; |
|
ALTER TABLE people RENAME COLUMN kon TO gender; |
|
ALTER TABLE people RENAME COLUMN efternamn TO last_name; |
|
ALTER TABLE people RENAME COLUMN tilltalsnamn TO first_name; |
|
ALTER TABLE people RENAME COLUMN sorteringsnamn TO sort_name; |
|
ALTER TABLE people RENAME COLUMN iort TO home_town; |
|
ALTER TABLE people RENAME COLUMN parti TO party; |
|
ALTER TABLE people RENAME COLUMN valkrets TO constituency; |
|
ALTER TABLE people RENAME COLUMN person_url_xml TO source_url; |
|
ALTER TABLE people RENAME COLUMN bild_url_80 TO image_url_small; |
|
ALTER TABLE people RENAME COLUMN bild_url_192 TO image_url_medium; |
|
ALTER TABLE people RENAME COLUMN bild_url_max TO image_url_large; |
|
ALTER TABLE people RENAME COLUMN personuppdrag TO assignments; |
|
ALTER TABLE people RENAME COLUMN personuppgift TO contact_details; |
|
ALTER TABLE people RENAME COLUMN namn TO name; |
|
ALTER TABLE people RENAME COLUMN aktiv TO active; |
|
ALTER TABLE talks RENAME COLUMN anforande_id TO source_speech_id; |
|
ALTER TABLE talks RENAME COLUMN anforandetext TO text; |
|
ALTER TABLE talks RENAME COLUMN avsnittsrubrik TO section_title; |
|
ALTER TABLE talks RENAME COLUMN anforande_nummer TO sequence; |
|
ALTER TABLE talks RENAME COLUMN kammaraktivitet TO activity_type; |
|
ALTER TABLE talks RENAME COLUMN talare TO speaker_name; |
|
ALTER TABLE talks RENAME COLUMN parti TO party; |
|
ALTER TABLE talks RENAME COLUMN intressent_id TO person_id; |
|
ALTER TABLE talks RENAME COLUMN datum TO date; |
|
ALTER TABLE talks RENAME COLUMN dok_datum TO source_datetime; |
|
ALTER TABLE talks RENAME COLUMN period TO session_year; |
|
ALTER TABLE talks RENAME COLUMN rel_dok_id TO related_doc_id; |
|
ALTER TABLE talks RENAME COLUMN dok_nummer TO source_doc_number; |
|
ALTER TABLE talks RENAME COLUMN hangar_id TO source_record_id; |
|
ALTER TABLE talks RENAME COLUMN dok_id TO source_doc_id; |
|
ALTER TABLE talks RENAME COLUMN titel TO title; |
|
ALTER TABLE talks RENAME COLUMN debate TO debate_id; |
|
ALTER TABLE talks RENAME COLUMN replik TO is_reply; |
|
ALTER TABLE talks RENAME COLUMN debateurl TO url_video; |
|
ALTER TABLE talks RENAME COLUMN audiofileurl TO url_audio_file; |
|
ALTER TABLE talks RENAME COLUMN startpos TO audio_start_seconds; |
|
ALTER TABLE chunks RENAME COLUMN talk_id TO speech_id; |
|
ALTER TABLE debates RENAME COLUMN debate TO id; |
|
ALTER TABLE debates RENAME COLUMN datum TO date; |
|
ALTER TABLE motions RENAME COLUMN dok_id TO doc_id; |
|
ALTER TABLE motions RENAME COLUMN hangar_id TO source_record_id; |
|
ALTER TABLE motions RENAME COLUMN rm TO session_label; |
|
ALTER TABLE motions RENAME COLUMN beteckning TO designation; |
|
ALTER TABLE motions RENAME COLUMN subtyp TO subtype; |
|
ALTER TABLE motions RENAME COLUMN organ TO committee; |
|
ALTER TABLE motions RENAME COLUMN datum TO date; |
|
ALTER TABLE motions RENAME COLUMN systemdatum TO source_updated_at; |
|
ALTER TABLE motions RENAME COLUMN publicerad TO published_at; |
|
ALTER TABLE motions RENAME COLUMN year TO session_year; |
|
ALTER TABLE motions RENAME COLUMN titel TO title; |
|
ALTER TABLE motions RENAME COLUMN undertitel TO subtitle; |
|
ALTER TABLE motions RENAME COLUMN forslag_text TO proposals_text; |
|
ALTER TABLE motions RENAME COLUMN dokument_url_text TO url_text; |
|
ALTER TABLE motions RENAME COLUMN dokument_url_html TO url_html; |
|
ALTER TABLE motions RENAME COLUMN pdf_url TO url_pdf; |
|
ALTER TABLE motions RENAME COLUMN forslag TO proposals_raw; |
|
ALTER TABLE motions RENAME COLUMN bilagor TO attachments; |
|
ALTER TABLE motions RENAME COLUMN num_yrkanden TO num_proposals; |
|
ALTER TABLE motion_authors RENAME COLUMN dok_id TO doc_id; |
|
ALTER TABLE motion_authors RENAME COLUMN intressent_id TO person_id; |
|
ALTER TABLE motion_authors RENAME COLUMN namn TO name; |
|
ALTER TABLE motion_authors RENAME COLUMN partibet TO party; |
|
ALTER TABLE motion_authors RENAME COLUMN roll TO role; |
|
ALTER TABLE motion_chunks RENAME COLUMN motion_id TO doc_id; |
|
ALTER TABLE motion_yrkanden RENAME COLUMN dok_id TO doc_id; |
|
ALTER TABLE motion_yrkanden RENAME COLUMN nummer TO number; |
|
ALTER TABLE motion_yrkanden RENAME COLUMN lydelse TO text; |
|
ALTER TABLE motion_yrkanden RENAME COLUMN utskottet TO committee_recommendation; |
|
ALTER TABLE motion_yrkanden RENAME COLUMN kammaren TO chamber_decision; |
|
ALTER TABLE motion_yrkanden RENAME COLUMN behandlas_i TO handled_in; |
|
ALTER TABLE chat_sessions RENAME COLUMN intressent_id TO person_id; |
|
ALTER TABLE chat_sessions RENAME COLUMN initial_talk_id TO initial_speech_id; |
|
ALTER TABLE chat_snapshots RENAME COLUMN intressent_id TO person_id; |
|
ALTER TABLE chat_snapshots RENAME COLUMN initial_talk_id TO initial_speech_id; |
|
|
|
-- tables |
|
ALTER TABLE talks RENAME TO speeches; |
|
ALTER TABLE chunks RENAME TO speech_chunks; |
|
ALTER TABLE motions RENAME TO documents; |
|
ALTER TABLE motion_chunks RENAME TO document_chunks; |
|
ALTER TABLE motion_authors RENAME TO document_authors; |
|
ALTER TABLE motion_yrkanden RENAME TO document_proposals; |
|
|
|
-- New: lets bills, written questions and committee reports share this |
|
-- table instead of needing one table per document type. ADD COLUMN with a |
|
-- constant default is metadata-only in PostgreSQL 11+. |
|
ALTER TABLE documents ADD COLUMN IF NOT EXISTS doc_type TEXT NOT NULL DEFAULT 'motion'; |
|
|
|
-- indexes (cosmetic, but keeps pg_dump diffs readable) |
|
ALTER INDEX IF EXISTS talks_search_idx RENAME TO speeches_search_idx; |
|
ALTER INDEX IF EXISTS talks_debate_idx RENAME TO speeches_debate_idx; |
|
ALTER INDEX IF EXISTS talks_parti_idx RENAME TO speeches_party_idx; |
|
ALTER INDEX IF EXISTS talks_datum_idx RENAME TO speeches_date_idx; |
|
ALTER INDEX IF EXISTS talks_year_idx RENAME TO speeches_year_idx; |
|
ALTER INDEX IF EXISTS talks_intressent_idx RENAME TO speeches_person_idx; |
|
ALTER INDEX IF EXISTS talks_talare_idx RENAME TO speeches_speaker_idx; |
|
ALTER INDEX IF EXISTS talks_dok_id_idx RENAME TO speeches_source_doc_idx; |
|
ALTER INDEX IF EXISTS talks_summary_embedding_idx RENAME TO speeches_summary_embedding_idx; |
|
ALTER INDEX IF EXISTS chunks_talk_idx RENAME TO speech_chunks_speech_idx; |
|
ALTER INDEX IF EXISTS chunks_embedding_idx RENAME TO speech_chunks_embedding_idx; |
|
ALTER INDEX IF EXISTS debates_datum_idx RENAME TO debates_date_idx; |
|
ALTER INDEX IF EXISTS motions_search_idx RENAME TO documents_search_idx; |
|
ALTER INDEX IF EXISTS motions_datum_idx RENAME TO documents_date_idx; |
|
ALTER INDEX IF EXISTS motions_year_idx RENAME TO documents_session_year_idx; |
|
ALTER INDEX IF EXISTS motions_organ_idx RENAME TO documents_committee_idx; |
|
ALTER INDEX IF EXISTS motions_parties_idx RENAME TO documents_parties_idx; |
|
ALTER INDEX IF EXISTS motion_authors_intressent_idx RENAME TO document_authors_person_idx; |
|
ALTER INDEX IF EXISTS motion_chunks_motion_idx RENAME TO document_chunks_doc_idx; |
|
ALTER INDEX IF EXISTS motion_chunks_embedding_idx RENAME TO document_chunks_embedding_idx; |
|
ALTER INDEX IF EXISTS motion_yrkanden_dok_idx RENAME TO document_proposals_doc_idx; |
|
ALTER INDEX IF EXISTS motion_yrkanden_embedding_idx RENAME TO document_proposals_embedding_idx; |
|
END IF; |
|
END |
|
$rename$; |
|
|
|
-- Recreate the search-vector triggers against the new column names. |
|
-- |
|
-- The text-search configuration is read from a database setting rather than |
|
-- hardcoded, so a deployment in another language does not have to patch DDL: |
|
-- ALTER DATABASE <db> SET app.fts_config = 'swedish'; |
|
-- It only takes effect for new sessions, so restart the API afterwards. |
|
|
|
DROP TRIGGER IF EXISTS talks_search_vector_trigger ON speeches; |
|
DROP TRIGGER IF EXISTS speeches_search_vector_trigger ON speeches; |
|
DROP FUNCTION IF EXISTS talks_search_vector_update(); |
|
|
|
CREATE OR REPLACE FUNCTION speeches_search_vector_update() RETURNS TRIGGER AS $fn$ |
|
BEGIN |
|
NEW.search_vector := to_tsvector( |
|
COALESCE(current_setting('app.fts_config', true), 'simple')::regconfig, |
|
coalesce(NEW.text, '')); |
|
RETURN NEW; |
|
END; |
|
$fn$ LANGUAGE plpgsql; |
|
|
|
CREATE TRIGGER speeches_search_vector_trigger |
|
BEFORE INSERT OR UPDATE OF text ON speeches |
|
FOR EACH ROW EXECUTE FUNCTION speeches_search_vector_update(); |
|
|
|
DROP TRIGGER IF EXISTS motions_search_vector_trigger ON documents; |
|
DROP TRIGGER IF EXISTS documents_search_vector_trigger ON documents; |
|
DROP FUNCTION IF EXISTS motions_search_vector_update(); |
|
|
|
CREATE OR REPLACE FUNCTION documents_search_vector_update() RETURNS TRIGGER AS $fn$ |
|
DECLARE cfg regconfig := COALESCE(current_setting('app.fts_config', true), 'simple')::regconfig; |
|
BEGIN |
|
NEW.search_vector := |
|
setweight(to_tsvector(cfg, coalesce(NEW.title, '')), 'A') || |
|
setweight(to_tsvector(cfg, coalesce(NEW.proposals_text, '')), 'B') || |
|
setweight(to_tsvector(cfg, coalesce(NEW.subtitle, '')), 'C') || |
|
setweight(to_tsvector(cfg, coalesce(NEW.text, '')), 'D'); |
|
RETURN NEW; |
|
END; |
|
$fn$ LANGUAGE plpgsql; |
|
|
|
CREATE TRIGGER documents_search_vector_trigger |
|
BEFORE INSERT OR UPDATE OF title, subtitle, text, proposals_text ON documents |
|
FOR EACH ROW EXECUTE FUNCTION documents_search_vector_update(); |
|
|
|
COMMIT;
|
|
|