zs-core-db
Version:
Servicios generales de acceso a bases de datos
60 lines (48 loc) • 1.83 kB
JavaScript
//@ts-check
const { raise } = require("../utils/Logging");
const checkRequiredModel = (model = {}) =>
!Object.keys(model)[0] && raise("Se requiere modelo");
const checkRequiredData = (model = {}, data = {}) => {
!Object.keys(data)[0] &&
raise(`No hay datos para guardar en tabla ${model.table}`);
};
const checkUpdateCondition = (model = {}, where = {}) =>
!Object.keys(where)[0] &&
raise(`No hay condición para actualizar registros de tabla ${model.table}`);
const checkDeleteCondition = (model = {}, where = {}) =>
!Object.keys(where)[0] &&
raise(`No hay condición para eliminar registros de tabla ${model.table}`);
const checkUndeclaredFields = (model = {}, data = {}) => {
const undeclaredFields = Object.keys(data)
.filter((field) => !model.fields[field])
.join(", ");
undeclaredFields[0] &&
raise(`Tabla ${model.table} no tiene declarado: ${undeclaredFields}`);
};
const checkRequiredInsertFields = (model = {}, data = {}) => {
const missingFields = Object.keys(model.fields)
.filter(
(name) =>
model.fields[name].required &&
!String(model.fields[name].default)?.trim()[0]
)
.filter((required) => !data[required])
.join(", ");
missingFields[0] && raise(`Tabla ${model.table} requiere: ${missingFields}`);
};
const checkRequiredUpdateFields = (model = {}, data = {}) => {
const missingFields = Object.keys(model.fields)
.filter((name) => model.fields[name].required)
.filter((required) => data[required] && !String(data[required])[0])
.join(", ");
missingFields[0] && raise(`Tabla ${model.table} requiere: ${missingFields}`);
};
module.exports = {
checkRequiredModel,
checkRequiredData,
checkUpdateCondition,
checkDeleteCondition,
checkUndeclaredFields,
checkRequiredInsertFields,
checkRequiredUpdateFields,
};