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

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

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

//------------------------------------
//Вспомогательные функции и компоненты
//------------------------------------

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

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

    //Добавление аргумента запроса
    const addArg = useCallback(
        async (name, title, dataType, mandatory, value) => {
            await executeStored({
                stored: "PKG_P8PANELS_QE.QUERY_OPT_ARG_ADD",
                args: { NRN: query, SNAME: name, STITLE: title, NDATA_TYPE: dataType, NMANDATORY: mandatory, SVALUE: value },
                loader: false
            });
        },
        [query, executeStored]
    );

    //Исправление аргумента запроса
    const editArg = useCallback(
        async (name, title, dataType, mandatory, value) => {
            await executeStored({
                stored: "PKG_P8PANELS_QE.QUERY_OPT_ARG_EDIT",
                args: { NRN: query, SNAME: name, STITLE: title, NDATA_TYPE: dataType, NMANDATORY: mandatory, SVALUE: value },
                loader: false
            });
        },
        [query, executeStored]
    );

    //Удаление аргумента запроса
    const removeArg = useCallback(
        async name => {
            await executeStored({ stored: "PKG_P8PANELS_QE.QUERY_OPT_ARG_REMOVE", args: { NRN: query, SNAME: name }, loader: false });
        },
        [query, executeStored]
    );

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

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

export { useQueryArgs };
