38 lines
1.5 KiB
MySQL
38 lines
1.5 KiB
MySQL
|
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 ;
|