First upload
This commit is contained in:
52
server/actions/db.actions.js
Normal file
52
server/actions/db.actions.js
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Acciones base para operaciones CRUD y búsquedas
|
||||
*/
|
||||
export const actions = {
|
||||
/**
|
||||
* Inserta o actualiza un registro y devuelve el objeto completo actualizado
|
||||
*/
|
||||
_set: async (db, { table, view, data }) => {
|
||||
// Si el id viene vacío o es 0, lo eliminamos para que MariaDB genere uno nuevo (AUTO_INCREMENT)
|
||||
if (!data.id) delete data.id;
|
||||
|
||||
const result = await db.upsert(table, data);
|
||||
|
||||
// Normalizamos la respuesta del driver de MariaDB
|
||||
const res = Array.isArray(result) ? result[0] : result;
|
||||
|
||||
// Obtenemos el ID: o bien el que ya venía en data, o el nuevo generado por el insert
|
||||
const idToFetch = data.id || res?.insertId;
|
||||
|
||||
if (!idToFetch) throw new Error("No se pudo determinar el ID del registro");
|
||||
|
||||
// Devolvemos el registro fresco (útil si usamos una 'view' con campos calculados)
|
||||
return db.one(view || table, { id: idToFetch });
|
||||
},
|
||||
|
||||
/**
|
||||
* Elimina un registro por ID
|
||||
*/
|
||||
_del: async (db, { table, id }) => {
|
||||
if (!id) throw new Error("ID requerido para eliminar");
|
||||
return db.delete(table, { id });
|
||||
},
|
||||
|
||||
/**
|
||||
* Obtiene todos los clientes (compatibilidad con ClientesOld)
|
||||
*/
|
||||
Clientes: async (db) => {
|
||||
return db.select('ClientesOld');
|
||||
},
|
||||
Recibos: async (db) => {
|
||||
return db.select('Recibos');
|
||||
},
|
||||
|
||||
/**
|
||||
* Búsqueda avanzada usando parámetros nombrados (raw query)
|
||||
*/
|
||||
Search: async (db, { text }) => {
|
||||
const query = 'SELECT * FROM ClientesOld WHERE Cliente LIKE :term OR NIF LIKE :term';
|
||||
const params = { term: `%${text}%` };
|
||||
return db.raw(query, params);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user