62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
/* global Venue */
|
|
'use strict';
|
|
|
|
const _ = require('lodash');
|
|
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
|
|
const models = require('../../core/models');
|
|
const cdnHelper = require('../../helpers/cdn.helper');
|
|
const getVimeoVideoInfo = require('../../helpers/vimeo.helper');
|
|
|
|
const providerComposer = (multimedia) => {
|
|
|
|
if (multimedia.provider === 'vimeo') {
|
|
multimedia.providerInfo = getVimeoVideoInfo(multimedia.code)
|
|
} else if (multimedia.provider === 'cdn') {
|
|
multimedia.url = cdnHelper.getCDNMediaUrl(multimedia.url);
|
|
}
|
|
|
|
return multimedia;
|
|
}
|
|
|
|
const extraMethods = {
|
|
afterFetchAll: (result, params, context) => {
|
|
|
|
if (!result.count) {
|
|
return result;
|
|
}
|
|
|
|
let rows = result.rows.map(function(row) {
|
|
let result = row.toJSON();
|
|
|
|
delete result.multimediaFile.id;
|
|
|
|
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
|
|
}
|
|
},
|
|
|
|
afterFetchOne: async (result, params, context) => {
|
|
if (!result) {
|
|
return result;
|
|
}
|
|
|
|
const multimedia = result.toJSON();
|
|
|
|
return providerComposer(multimedia);
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
module.exports = generateService(models.Multimedia, extraMethods); |