export default function dataToGql({ data, nulls, enums }) {
    const fields = [];
    Object.keys(data).map(key => {
        const value = data[key];
        const valueType = typeof value;
        // key null for key in nulls
        if (!value && nulls && nulls[key]) {
            fields.push(`${key}: null`);
            return;
        }
        if (!value)
            return;
        if (valueType === "object")
            return;
        let keyValue = `${key}: "${value}"`;
        if (enums && enums[key])
            keyValue = `${key}: ${value}`;
        fields.push(keyValue);
    });
    const objects = fields.join(", ");
    return `{${objects}}`;
}
export function filtersToWhere({ filters, search, operators }) {
    const fields = [];
    let searchStr = search
        ? `${search.key}: {${search.operator}: ${search.value}},`
        : "";
    filters.map(item => {
        let value = item.value;
        const valueType = typeof value;
        if (!value)
            return;
        if (valueType === "object")
            return;
        const key = String(item.column.field);
        // filter contains search key
        if (search && key === search.key)
            searchStr = "";
        let operator = "_eq"; // default
        if (operators && operators[key]) {
            operator = operators[key];
            switch (operator) {
                case "_like":
                    value = `"%${value}%"`;
                    break;
            }
        }
        fields.push(`${key}: {${operator}: "${value}"}`);
    });
    const objects = fields.join(", ");
    return `{${searchStr} ${objects}}`;
}
