Loggable now inserts the correct values for FK values
gitea/salix/master This commit looks good
Details
gitea/salix/master This commit looks good
Details
This commit is contained in:
parent
9abaa8ce51
commit
4861b789f7
|
@ -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
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"log": {
|
||||
"model": "ClientLog",
|
||||
"relation": "client",
|
||||
"changedModelValue": "nickname"
|
||||
"showField": "nickname"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"log": {
|
||||
"model": "ClientLog",
|
||||
"relation": "client",
|
||||
"changedModelValue": "name"
|
||||
"showField": "name"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "ClientLog",
|
||||
"relation": "client",
|
||||
"changedModelValue": "type"
|
||||
"showField": "type"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
"name": "Client",
|
||||
"base": "Loggable",
|
||||
"log": {
|
||||
"model":"ClientLog"
|
||||
"model":"ClientLog",
|
||||
"showField": "id"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "ClientLog",
|
||||
"relation": "client",
|
||||
"changedModelValue": "description"
|
||||
"showField": "description"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "ItemLog",
|
||||
"relation": "item",
|
||||
"changedModelValue": "code"
|
||||
"showField": "code"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "ItemLog",
|
||||
"relation": "item",
|
||||
"changedModelValue": "botanical"
|
||||
"showField": "botanical"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "ItemLog",
|
||||
"relation": "item",
|
||||
"changedModelValue": "code"
|
||||
"showField": "code"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "ItemLog",
|
||||
"relation": "item",
|
||||
"changedModelValue": "value"
|
||||
"showField": "value"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
"name": "Item",
|
||||
"base": "Loggable",
|
||||
"log": {
|
||||
"model":"ItemLog"
|
||||
"model":"ItemLog",
|
||||
"showField": "id"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
{
|
||||
"name": "TicketObservation",
|
||||
"base": "VnModel",
|
||||
"base": "Loggable",
|
||||
"log": {
|
||||
"model": "TicketLog",
|
||||
"relation": "ticket"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "ticketObservation"
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
"base": "Loggable",
|
||||
"log": {
|
||||
"model": "TicketLog",
|
||||
"relation": "ticket",
|
||||
"changedModelValue": "description"
|
||||
"relation": "ticket"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "TicketLog",
|
||||
"relation": "ticket",
|
||||
"changedModelValue": "description"
|
||||
"showField": "description"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "TicketLog",
|
||||
"relation": "ticket",
|
||||
"changedModelValue": "stateFk"
|
||||
"showField": "stateFk"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"log": {
|
||||
"model": "TicketLog",
|
||||
"relation": "ticket",
|
||||
"changedModelValue": "ticketFk"
|
||||
"showField": "ticketFk"
|
||||
},
|
||||
"options": {
|
||||
"mysql": {
|
||||
|
@ -27,4 +27,4 @@
|
|||
"foreignKey": "ticketFk"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue