First upload

This commit is contained in:
2026-03-17 14:12:37 +01:00
commit c857900860
46 changed files with 3343 additions and 0 deletions

View 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);
}
};