DO $$
DECLARE
	_path  character varying(256) := 'patch-2026_03_03-MenuTails';
	_build integer := 16169;
BEGIN
	IF EXISTS (SELECT 1 FROM public."Versions" WHERE "Path" = _path) THEN
		RETURN;
	END IF;

	IF EXISTS (SELECT 1 FROM public."Versions" WHERE "Build" >= _build) THEN
		RETURN;
	END IF;

	BEGIN
        -- Скрипт создания таблицы плиток меню пользователей
        CREATE TABLE IF NOT EXISTS public."MenuTails"
        (
            "Id"         bigserial primary key   NOT NULL,           -- Идентификатор
            "TitlesJson" character varying(4000) NOT NULL,           -- Словарь локали и заголовков
            "Url"        character varying(300)  NULL,               -- Редирект ссылка
            "Module"     int                     NOT NULL DEFAULT 0, -- enum Модуль
            "TailType"   int                     NOT NULL DEFAULT 0, -- enum Тип плитки
            "Order"      int                     NOT NULL,           -- Позиция в списке плиток
            "CustomerId" bigint                  NULL,               -- Организация к которой привязана плитка
            "IconFileId" bigint                  NULL,               -- Идентификатор файла кастомной иконки плитки

            -- Проверка на уникальность очереди
            CONSTRAINT "customerId_order_unique" UNIQUE ("CustomerId", "Order")
        );

        -- Инициализация базовых плиток меню
        -- Инициализация настроек для почты
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -1, -- В соответствии с Module
           '{ "ru":"Почта","en":"Mail" }',
           1,
           0,
           1
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Почта","en":"Mail" }',
                "Module" = 1,
                "TailType" = 0,
                "Order" = 1;

        -- Инициализация настроек для календаря
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -2, -- В соответствии с Module
           '{ "ru":"Календарь","en":"Calendar" }',
           2,
           0,
           2
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Календарь","en":"Calendar" }',
                "Module" = 2,
                "TailType" = 0,
                "Order" = 2;

        -- Инициализация настроек для диска
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -3, -- В соответствии с Module
           '{ "ru":"Диск","en":"Disk" }',
           3,
           0,
           3
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Диск","en":"Disk" }',
                "Module" = 3,
                "TailType" = 0,
                "Order" = 3;

        -- Инициализация настроек для админки
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -4, -- В соответствии с Module
           '{"ru":"Управление","en":"Admin" }',
           4,
           0,
           4
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Управление","en":"Admin" }',
                "Module" = 4,
                "TailType" = 0,
                "Order" = 4;

        -- Инициализация настроек для графики
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -5, -- В соответствии с Module
           '{ "ru":"Графика","en":"Draw" }',
           5,
           0,
           5
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Графика","en":"Draw" }',
                "Module" = 5,
                "TailType" = 0,
                "Order" = 5;

        -- Инициализация настроек для платежей
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -7, -- В соответствии с Module
           '{ "ru":"Платежи","en":"Payments" }',
           7,
           0,
           7
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Платежи","en":"Payments" }',
                "Module" = 7,
                "TailType" = 0,
                "Order" = 7;

        -- Инициализация настроек для контактов
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -8, -- В соответствии с Module
           '{ "ru":"Контакты","en":"Contacts" }',
           8,
           0,
           8
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Контакты","en":"Contacts" }',
                "Module" = 8,
                "TailType" = 0,
                "Order" = 8;

        -- Инициализация настроек для команд
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -9, -- В соответствии с Module
           '{ "ru":"Команды","en":"Team" }',
           9,
           0,
           9
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Команды","en":"Team" }',
                "Module" = 9,
                "TailType" = 0,
                "Order" = 9;

        -- Инициализация настроек для проектов
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -10, -- В соответствии с Module
           '{ "ru":"Проекты","en":"Projects" }',
           10,
           0,
           10
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Проекты","en":"Projects" }',
                "Module" = 10,
                "TailType" = 0,
                "Order" = 10;

        -- Инициализация настроек для страниц
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
           -11, -- В соответствии с Module
           '{ "ru":"Страницы","en":"Pages" }',
           11,
           0,
           11
       )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Страницы","en":"Pages" }',
                "Module" = 11,
                "TailType" = 0,
                "Order" = 11;

        -- Инициализация настроек для форм
        INSERT INTO public."MenuTails" (
            "Id",
            "TitlesJson",
            "Module",
            "TailType",
            "Order"
        )
        VALUES (
            -12, -- В соответствии с Module
            '{ "ru":"Формы","en":"Forms" }',
            12,
            0,
            12
        )
        ON CONFLICT ("Id") DO UPDATE
            SET "TitlesJson" = '{ "ru":"Формы","en":"Forms" }',
                "Module" = 12,
                "TailType" = 0,
                "Order" = 12;

	EXCEPTION
		WHEN OTHERS THEN
			RAISE NOTICE '[ERR] %: %', _path, SQLERRM;
	END;
END;
$$;
