salix/db/routines/util/procedures/log_addWithUser.sql

38 lines
1.5 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`log_addWithUser`(
vSchema VARCHAR(45),
vEntity VARCHAR(45),
vChangedModel VARCHAR(45),
vOriginFk INT,
vChangedModelId INT,
vActionCode VARCHAR(45),
vOldInstance JSON,
vNewInstance JSON,
vUserId INT)
BEGIN
/**
* Guarda las acciones realizadas por el usuario
*
* @param vScheme Esquema al que pertenece la tabla.
* @param vEntity Nombre que hace referencia a la tabla donde se insertará el log
* @param vChangedModel Nombre que hace referencia a la tabla que se modifica
* @param vOriginFk Id del registro de la tabla origen
* @param vChangedModelId Id del registro de la tabla a la que se realiza la acción
* @param vActionCode Código de la acción {insert | delete | update}
* @param vOldInstance JSON que contiene los valores viejos
* @param vNewInstance JSON que contiene los valores nuevos
* @param vUserId Id del usuario que realiza la acción
*/
DECLARE vTableName VARCHAR(255) DEFAULT CONCAT(IFNULL(vEntity, ''), 'Log');
SET vSchema = util.quoteIdentifier(vSchema);
SET vTableName = util.quoteIdentifier(vTableName);
CALL util.log_cleanInstances(vActionCode, vOldInstance, vNewInstance);
EXECUTE IMMEDIATE CONCAT(
'INSERT INTO ', vSchema, '.', vTableName, ' SET changedModel = ?, originFk = ?, changedModelId= ?, action = ?, oldInstance = ?, newInstance = ?, userFk = ?'
) USING vChangedModel, vOriginFk, vChangedModelId, vActionCode, vOldInstance, vNewInstance, vUserId;
END$$
DELIMITER ;