1
0
Fork 0
database/20230218130437_translations.up.sql

31 lines
1.1 KiB
PL/PgSQL

BEGIN;
CREATE TABLE translations (
-- name type constraints
id BIGSERIAL PRIMARY KEY,
word_id BIGINT NOT NULL REFERENCES words (id),
index BIGINT NOT NULL,
-- CONSTRAINT name CHECK (condition)
CONSTRAINT index_is_not_negative CHECK (index >= 0)
);
CREATE TABLE translation_texts (
-- name type constraints
id BIGSERIAL PRIMARY KEY,
translation_id BIGINT NOT NULL REFERENCES translations (id),
lang_id BIGINT NOT NULL REFERENCES languages (id),
value TEXT NOT NULL,
commentary TEXT,
-- CONSTRAINT name CHECK (condition)
CONSTRAINT value_is_sane_text CHECK (is_sane_text(value)),
CONSTRAINT commentary_is_sane_text CHECK (commentary IS NULL OR
is_sane_text(commentary))
);
CREATE UNIQUE INDEX translations_word_index ON translations (word_id, index);
CREATE UNIQUE INDEX translation_texts_translation_lang
ON translation_texts (translation_id, lang_id);
COMMIT;