const sanitizeValue = value => { if (typeof value === 'string') { return `'${value}'`; } else if (value === null) { return 'NULL'; } return value; }; export const generateUpdateSqlQuery = ( schema, table, pks, columnsUpdated, formData ) => { const setClauses = columnsUpdated .map(colName => `${colName} = ${sanitizeValue(formData[colName])}`) .join(', '); const whereClause = Object.keys(pks) .map(pk => `${pk} = ${pks[pk]}`) .join(' AND '); return ` START TRANSACTION; UPDATE ${schema}.${table} SET ${setClauses} WHERE (${whereClause}); SELECT ${columnsUpdated.join(', ')} FROM ${schema}.${table} WHERE (${whereClause}); COMMIT; `; }; export const generateInsertSqlQuery = ( schema, table, formData, columnsUpdated, createModelDefault ) => { const columns = createModelDefault.field ? [createModelDefault.field, ...columnsUpdated].join(', ') : columnsUpdated.join(', '); const values = createModelDefault.value ? [ createModelDefault.value, ...columnsUpdated.map(colName => sanitizeValue(formData[colName])) ].join(', ') : columnsUpdated .map(colName => sanitizeValue(formData[colName])) .join(', '); return ` START TRANSACTION; INSERT INTO ${schema}.${table} (${columns}) VALUES (${values}); SELECT id, ${columnsUpdated.join(', ')} FROM ${schema}.${table} WHERE (id = LAST_INSERT_ID()); COMMIT; `; };