Loggable now inserts the correct values for FK values
gitea/salix/master This commit looks good Details

This commit is contained in:
Gerard 2019-04-04 12:38:54 +02:00
parent 9abaa8ce51
commit 4861b789f7
16 changed files with 52 additions and 26 deletions

View File

@ -92,6 +92,8 @@ module.exports = function(Self) {
newInstance: {}
};
delete instance.originFk;
let logModel = definition.settings.log.model;
await ctx.Model.app.models[logModel].create(logRecord, options);
});
@ -111,10 +113,28 @@ module.exports = function(Self) {
let val1 = ctx.Model.relations[key1];
if (val1.keyFrom == key && key != 'id') {
let recordSet = await ctx.Model.app.models[val1.modelTo.modelName].findById(val, options);
let definition = val1.modelTo.definition;
let changedModelValue = definition.settings.log && definition.settings.log.changedModelValue;
val = (changedModelValue && recordSet && recordSet[changedModelValue]) || (recordSet && recordSet.id) || val; // FIXME preparar todos los modelos con campo name
let showField = val1.modelTo && val1.modelTo.definition.settings.log && val1.modelTo.definition.settings.log.showField && recordSet && recordSet[val1.modelTo.definition.settings.log.showField];
if (!showField) {
const showFieldNames = [
'name',
'description',
'code'
];
for (field of showFieldNames) {
if (val1.modelTo.definition.properties && val1.modelTo.definition.properties[field] && recordSet && recordSet[field]) {
showField = field;
break;
}
}
}
if (showField) {
val = recordSet[showField];
break;
}
val = recordSet && recordSet.id; // FIXME preparar todos los modelos con campo name
break;
}
}
@ -151,7 +171,7 @@ module.exports = function(Self) {
if (ctx.where && ctx.where[primaryKey])
originId = ctx.where[primaryKey];
else {
else if (ctx.instance) {
originId = ctx.instance[primaryKey];
changedModelId = ctx.instance.id;
}
@ -161,18 +181,19 @@ module.exports = function(Self) {
}
// Sets the changedModelValue to save and the instances changed in case its an updateAll
let changedModelValue = definition.settings.log.changedModelValue;
let showField = definition.settings.log.showField;
let where;
if (changedModelValue && (!ctx.instance || !ctx.instance[changedModelValue]) && ctx.where) {
if (showField && (!ctx.instance || !ctx.instance[showField]) && ctx.where) {
changedModelId = [];
where = [];
let changedInstances = await ctx.Model.app.models[definition.name].find({where: ctx.where, fields: ['id', changedModelValue]}, options);
let changedInstances = await ctx.Model.app.models[definition.name].find({where: ctx.where, fields: ['id', showField, primaryKey]}, options);
changedInstances.forEach(element => {
where.push(element[changedModelValue]);
where.push(element[showField]);
changedModelId.push(element.id);
originId = element[primaryKey];
});
} else if (ctx.hookState.oldInstance)
where = ctx.instance[changedModelValue];
where = ctx.instance[showField];
// Set oldInstance, newInstance, userFk and action

View File

@ -5,7 +5,7 @@
"log": {
"model": "ClientLog",
"relation": "client",
"changedModelValue": "nickname"
"showField": "nickname"
},
"options": {
"mysql": {

View File

@ -5,7 +5,7 @@
"log": {
"model": "ClientLog",
"relation": "client",
"changedModelValue": "name"
"showField": "name"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "ClientLog",
"relation": "client",
"changedModelValue": "type"
"showField": "type"
},
"options": {
"mysql": {

View File

@ -2,7 +2,8 @@
"name": "Client",
"base": "Loggable",
"log": {
"model":"ClientLog"
"model":"ClientLog",
"showField": "id"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "ClientLog",
"relation": "client",
"changedModelValue": "description"
"showField": "description"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "ItemLog",
"relation": "item",
"changedModelValue": "code"
"showField": "code"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "ItemLog",
"relation": "item",
"changedModelValue": "botanical"
"showField": "botanical"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "ItemLog",
"relation": "item",
"changedModelValue": "code"
"showField": "code"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "ItemLog",
"relation": "item",
"changedModelValue": "value"
"showField": "value"
},
"options": {
"mysql": {

View File

@ -2,7 +2,8 @@
"name": "Item",
"base": "Loggable",
"log": {
"model":"ItemLog"
"model":"ItemLog",
"showField": "id"
},
"options": {
"mysql": {

View File

@ -1,6 +1,10 @@
{
"name": "TicketObservation",
"base": "VnModel",
"base": "Loggable",
"log": {
"model": "TicketLog",
"relation": "ticket"
},
"options": {
"mysql": {
"table": "ticketObservation"

View File

@ -3,8 +3,7 @@
"base": "Loggable",
"log": {
"model": "TicketLog",
"relation": "ticket",
"changedModelValue": "description"
"relation": "ticket"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "TicketLog",
"relation": "ticket",
"changedModelValue": "description"
"showField": "description"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "TicketLog",
"relation": "ticket",
"changedModelValue": "stateFk"
"showField": "stateFk"
},
"options": {
"mysql": {

View File

@ -4,7 +4,7 @@
"log": {
"model": "TicketLog",
"relation": "ticket",
"changedModelValue": "ticketFk"
"showField": "ticketFk"
},
"options": {
"mysql": {
@ -27,4 +27,4 @@
"foreignKey": "ticketFk"
}
}
}
}