Files
forms/scripts/init_db.sql
2026-04-09 19:28:41 +03:00

31 lines
1.2 KiB
PL/PgSQL

-- Включение расширений PostgreSQL
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pg_trgm"; -- для поиска по шаблону
CREATE EXTENSION IF NOT EXISTS "btree_gin"; -- для составных индексов
-- Создание кастомных индексов для JSONB
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_submissions_email
ON submissions ((data->>'email')) WHERE data ? 'email';
-- Функция для валидации JSONB схемы
CREATE OR REPLACE FUNCTION validate_submission_data()
RETURNS trigger AS $$
BEGIN
-- Проверяем, что data не пустой
IF NEW.data IS NULL OR NEW.data = '{}'::jsonb THEN
RAISE EXCEPTION 'Submission data cannot be empty';
END IF;
-- Проверяем, что все обязательные поля присутствуют
IF NEW.form_id IS NOT NULL THEN
-- Дополнительная валидация через триггер
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER validate_submission
BEFORE INSERT OR UPDATE ON submissions
FOR EACH ROW
EXECUTE FUNCTION validate_submission_data();