/*
    Парус 8 - Панели мониторинга - Редактор запросов
    Пользовательские хуки для работы со связями
*/

//---------------------
//Подключение библиотек
//---------------------

import { useContext, useCallback } from "react"; //Классы React
import { BackEndCtx } from "../../../../context/backend"; //Контекст взаимодействия с сервером

//-----------
//Тело модуля
//-----------

//Работа со связами запроса
const useQueryRelations = query => {
    //Подключение к контексту взаимодействия с сервером
    const { executeStored } = useContext(BackEndCtx);

    //Добавление отношения сущностей в запрос
    const addRl = useCallback(
        async (source, target) => {
            await executeStored({ stored: "PKG_P8PANELS_QE.QUERY_RL_ADD", args: { NRN: query, SSOURCE: source, STARGET: target }, loader: false });
        },
        [query, executeStored]
    );

    //Удаление отношения сущностей из запроса
    const removeRl = useCallback(
        async rl => {
            await executeStored({ stored: "PKG_P8PANELS_QE.QUERY_RL_REMOVE", args: { NRN: query, SID: rl }, loader: false });
        },
        [query, executeStored]
    );

    //Установка признака обязательности отношения сущности в запросе
    const setRlMandatory = useCallback(
        async (rl, mandatory) => {
            await executeStored({
                stored: "PKG_P8PANELS_QE.QUERY_RL_MANDATORY_SET",
                args: { NRN: query, SID: rl, NMANDATORY: mandatory },
                loader: false
            });
        },
        [query, executeStored]
    );

    //Возвращаем интерфейс хука
    return { addRl, removeRl, setRlMandatory };
};

//----------------
//Интерфейс модуля
//----------------

export { useQueryRelations };
