app2-api/modules/speakers/speaker.service.js
2019-08-06 19:23:56 +02:00

59 lines
1.6 KiB
JavaScript

/* global Venue */
'use strict';
const _ = require('lodash');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const Sequelize = require('sequelize');
const models = require('../../core/models');
const { speakerComposer } = require('../../helpers/composes.helper');
const extraMethods = {
afterFetchAll: (result, params, context) => {
if (!result.count) {
return result;
}
let rows = result.rows.map(row => row.toJSON());
rows = rows.map(speaker => speakerComposer(speaker, context));
return {
count: result.count,
rows: rows
}
},
afterFetchOne: (result, params, context) => {
return speakerComposer(result.toJSON(), context);
},
beforeUpdate: (values, findOptions, context) => {
delete values.createdAt;
delete values.updatedAt;
delete values.userId;
// Descomponemos RRSS
values = Object.assign(values, values.rrss, { rrss: undefined });
return values;
},
update: async (params, values, context) => {
const findOptions = parseParamsToFindOptions(params);
if (extraMethods.beforeUpdate) {
values = extraMethods.beforeUpdate(values, findOptions, context);
}
let speaker = await models.Speaker.findOne(findOptions);
await speaker.update(values);
speaker.setValues(values.values.map(value => value.id));
await speaker.save();
return [1];
},
}
module.exports = generateService(models.Speaker, extraMethods);