1
1
mirror of https://github.com/Fabio286/antares.git synced 2025-06-05 21:59:22 +02:00

refactor: improve update cell condition and move whereJson formatter to sqlUtils

This commit is contained in:
️Yaskur Dyas⚔⚔️⚔
2025-01-14 05:44:12 +07:00
parent 110dcd335a
commit 450c4c47f3
2 changed files with 24 additions and 20 deletions

View File

@@ -8,6 +8,7 @@ import customizations from '../customizations';
import { ClientCode } from '../interfaces/antares';
import { getArrayDepth } from './getArrayDepth';
import hexToBinary, { HexChar } from './hexToBinary';
import * as antares from 'common/interfaces/antares';
/**
* Escapes a string fo SQL use
@@ -209,3 +210,20 @@ export const jsonToSqlInsert = (args: {
return insertsString;
};
export const formatJsonForSqlWhere = (jsonValue: object, clientType: antares.ClientCode) => {
const formattedValue = JSON.stringify(jsonValue);
switch (clientType) {
case 'mysql':
return ` = CAST('${formattedValue}' AS JSON)`;
case 'maria':
return ` = '${formattedValue}'`;
case 'pg':
return `::text = '${formattedValue}'`;
case 'firebird':
case 'sqlite':
default:
return ` = '${formattedValue}'`;
}
};

View File

@@ -3,7 +3,7 @@ import { ARRAY, BIT, BLOB, BOOLEAN, DATE, DATETIME, FLOAT, LONG_TEXT, NUMBER, TE
import * as antares from 'common/interfaces/antares';
import { InsertRowsParams } from 'common/interfaces/tableApis';
import { fakerCustom } from 'common/libs/fakerCustom';
import { sqlEscaper } from 'common/libs/sqlUtils';
import { formatJsonForSqlWhere, sqlEscaper } from 'common/libs/sqlUtils';
import { ipcMain } from 'electron';
import * as fs from 'fs';
import * as moment from 'moment';
@@ -233,26 +233,12 @@ export default (connections: Record<string, antares.Client>) => {
for (const key in orgRow) {
if (typeof orgRow[key] === 'string')
orgRow[key] = `'${orgRow[key]}'`;
else if (typeof orgRow[key] === 'object') {
switch (connections[params.uid]._client) {
case 'mysql':
orgRow[key] = `CAST('${JSON.stringify(orgRow[key])}' AS JSON)`;
break;
case 'maria':
orgRow[key] = `'${JSON.stringify(orgRow[key])}'`;
break;
case 'pg':
orgRow[key] = `::text='${JSON.stringify(orgRow[key])}'`;
break;
case 'firebird':
case 'sqlite':
}
}
if (orgRow[key] === null)
orgRow[key] = ` = '${orgRow[key]}'`;
else if (typeof orgRow[key] === 'object' && orgRow[key] !== null)
orgRow[key] = formatJsonForSqlWhere(orgRow[key], connections[params.uid]._client);
else if (orgRow[key] === null)
orgRow[key] = `IS ${orgRow[key]}`;
else if (!String(orgRow[key]).includes('::text='))
else
orgRow[key] = `= ${orgRow[key]}`;
}