app2-api/modules/multimedia/multimedia.service.js

62 lines
1.5 KiB
JavaScript
Raw Normal View History

2019-07-09 17:39:52 +00:00
/* global Venue */
'use strict';
const _ = require('lodash');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const models = require('../../core/models');
2019-08-05 18:04:29 +00:00
const cdnHelper = require('../../helpers/cdn.helper');
2019-08-16 16:37:13 +00:00
const { extractProviderInfo } = require('../../helpers/providers.helper');
2019-07-09 17:39:52 +00:00
2019-07-24 21:03:10 +00:00
const providerComposer = (multimedia) => {
2019-08-05 18:04:29 +00:00
if (multimedia.provider === 'vimeo') {
2019-08-16 16:37:13 +00:00
multimedia.providerInfo = extractProviderInfo(multimedia.code)
2019-08-05 18:04:29 +00:00
} else if (multimedia.provider === 'cdn') {
multimedia.url = cdnHelper.getCDNMediaUrl(multimedia.url);
}
return multimedia;
2019-07-24 21:03:10 +00:00
}
2019-07-09 17:39:52 +00:00
2019-07-24 21:03:10 +00:00
const extraMethods = {
2019-08-05 18:04:29 +00:00
afterFetchAll: (result, params, context) => {
if (!result.count) {
return result;
}
let rows = result.rows.map(function(row) {
let result = row.toJSON();
2019-08-07 13:56:25 +00:00
delete result.multimediaFile.id;
2019-08-05 18:04:29 +00:00
result = Object.assign(result, result.multimediaFile, { multimediaFile: undefined })
delete result.createdAt;
delete result.updatedAt;
delete result.userId;
return providerComposer(result);
});
return {
count: result.count,
rows: rows
}
},
2019-07-24 21:03:10 +00:00
afterFetchOne: async (result, params, context) => {
if (!result) {
return result;
}
const multimedia = result.toJSON();
2019-08-07 13:56:25 +00:00
return providerComposer(multimedia);
2019-07-24 21:03:10 +00:00
},
2019-08-07 13:56:25 +00:00
2019-07-24 21:03:10 +00:00
}
2019-07-25 07:37:04 +00:00
module.exports = generateService(models.Multimedia, extraMethods);