create schema if not exists admin;

-- DROP TABLE is exists admin.templates;
CREATE TABLE if not exists admin.templates();
ALTER TABLE admin.templates add column if not exists template_id text NOT NULL DEFAULT next_id();
ALTER TABLE admin.templates DROP CONSTRAINT if exists admin_templates_template_id_pkey cascade;
ALTER TABLE admin.templates DROP CONSTRAINT if exists admin_templates_name_type_unique;

ALTER TABLE admin.templates add column if not exists name text;
ALTER TABLE admin.templates add column if not exists title text;
ALTER TABLE admin.templates add column if not exists type text;
ALTER TABLE admin.templates add column if not exists category text;
ALTER TABLE admin.templates add column if not exists route_id text;
ALTER TABLE admin.templates add column if not exists is_active boolean;
ALTER TABLE admin.templates alter column is_active   set default true;
ALTER TABLE admin.templates add column if not exists body text;
ALTER TABLE admin.templates add column if not exists description text;
ALTER TABLE admin.templates add column if not exists placeholders json;
ALTER TABLE admin.templates add column if not exists version numeric;

ALTER TABLE admin.templates add column if not exists created_by text;
ALTER TABLE admin.templates add column if not exists created_at timestamp without time zone;
ALTER TABLE admin.templates alter column created_at set DEFAULT date_trunc('seconds'::text, now());
ALTER TABLE admin.templates add column if not exists updated_by text;
ALTER TABLE admin.templates add column if not exists updated_at timestamp without time zone;
ALTER TABLE admin.templates alter column updated_at set DEFAULT date_trunc('seconds'::text, now());

ALTER TABLE admin.templates add CONSTRAINT admin_templates_template_id_pkey PRIMARY KEY (template_id);
ALTER TABLE admin.templates add CONSTRAINT admin_templates_name_type_unique UNIQUE (name, type);

COMMENT ON TABLE admin.templates IS 'Шаблони для друку';

COMMENT ON COLUMN admin.templates.created_by IS 'ID користувача';

COMMENT ON COLUMN admin.templates.name IS 'Систамна назва шаблону';
COMMENT ON COLUMN admin.templates.title IS 'Назва шаблону українською';
COMMENT ON COLUMN admin.templates.type IS 'Тип вихідних даних шаблону (demo/user)';
COMMENT ON COLUMN admin.templates.category IS 'Категорія або тип документа';
COMMENT ON COLUMN admin.templates.route_id IS 'ID інтерфейсу';
COMMENT ON COLUMN admin.templates.is_active IS 'Чи доступний шаблон для використання';
COMMENT ON COLUMN admin.templates.body IS 'Body HTML';
COMMENT ON COLUMN admin.templates.description IS 'Короткий опис шаблону';
COMMENT ON COLUMN admin.templates.placeholders IS 'Список змінних, які можна вставляти';
COMMENT ON COLUMN admin.templates.version IS 'Версія шаблону';