Multimedias

This commit is contained in:
David Arranz 2019-07-25 09:37:04 +02:00
parent 4aabf4258a
commit 71273e9a63
7 changed files with 118 additions and 7 deletions

View File

@ -60,8 +60,22 @@ module.exports = function (sequelize, DataTypes) {
timestamps: true,
});
Multimedia.addScope('includeMultimediaFile', () => {
return {
include: [
{ model: sequelize.models.MultimediaFile, as: 'multimediaFile' }
]
}
});
Multimedia.associate = function (models) {
Multimedia.MultimediaFile = Multimedia.belongsTo(models.MultimediaFile, { foreignKey: 'multimediafileId' });
Multimedia.MultimediaFile = Multimedia.belongsTo(models.MultimediaFile, { foreignKey: 'multimediafileId', as: "multimediaFile" });
Multimedia.Speaker = Multimedia.hasOne(models.Speaker, {
foreignKey: 'entityId',
as: 'speaker'
});
};
return Multimedia;

View File

@ -13,16 +13,20 @@ const SortMiddleware = require('../../middlewares/sort');
const multimediaController = require('./multimedia.controller');
routes.get('/multimedias', cacheSuccesses,
routes.get('/multimedias', //cacheSuccesses,
PaginateMiddleware.middleware(),
//SortMiddleware.middleware({ default: "init_available_date" }),
multimediaController.find({})
multimediaController.find({
scopes: ['includeMultimediaFile']
})
);
routes.get('/multimedias/:id', cacheSuccesses,
routes.get('/multimedias/:id', //cacheSuccesses,
//PaginateMiddleware.middleware(),
//SortMiddleware.middleware({ default: "init_available_date" }),
multimediaController.findOne({})
multimediaController.findOne({
scopes: ['includeMultimediaFile']
})
);

View File

@ -27,4 +27,4 @@ const extraMethods = {
}
module.exports = generateService(models.MultimediaFile, extraMethods);
module.exports = generateService(models.Multimedia, extraMethods);

View File

@ -0,0 +1,14 @@
'use strict';
const generateControllers = require('../../core/controllers');
const multimediaFileService = require('./multimedia_file.service');
// Module Name
const MODULE_NAME = '[multimediaFile.controller]';
const controllerOptions = { MODULE_NAME };
const extraControllers = {};
module.exports = generateControllers(multimediaFileService, extraControllers, controllerOptions);

View File

@ -37,8 +37,16 @@ module.exports = function (sequelize, DataTypes) {
MultimediaFile.associate = function (models) {
MultimediaFile.UserCreate = MultimediaFile.belongsTo(models.User, { foreignKey: 'userId' });
MultimediaFile.Multimedias = MultimediaFile.hasMany(models.Multimedia, { foreignKey: 'multimediafileId' });
MultimediaFile.Multimedias = MultimediaFile.hasMany(models.Multimedia, { foreignKey: 'multimediafileId', as: "multimedias" });
};
MultimediaFile.addScope('includeMultimedias', () => {
return {
include: [
{ model: sequelize.models.Multimedia, as: 'multimedias' }
]
}
});
return MultimediaFile;
};

View File

@ -0,0 +1,41 @@
const routes = require('express').Router();
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator');
const { cacheSuccesses } = require('../../middlewares/cache');
//const SchemaValidator = require('../../middlewares/schemaValidator');
const PaginateMiddleware = require('../../middlewares/paginate');
const FieldMiddleware = require('../../middlewares/fields');
const SortMiddleware = require('../../middlewares/sort');
const multimediaFileController = require('./multimedia_file.controller');
const generalInvalidFields = [
'userId', 'createdAt', 'updatedAt',
];
routes.get('/multimediafiles', //cacheSuccesses,
FieldMiddleware.middleware({
invalidFields: generalInvalidFields
}),
PaginateMiddleware.middleware(),
//SortMiddleware.middleware({ default: "init_available_date" }),
multimediaFileController.find({
scopes: ['includeMultimedias']
})
);
routes.get('/multimediafiles/:id', //cacheSuccesses,
FieldMiddleware.middleware({
invalidFields: generalInvalidFields
}),
//SortMiddleware.middleware({ default: "init_available_date" }),
multimediaFileController.findOne({
scopes: ['includeMultimedias']
})
);
module.exports = routes;

View File

@ -0,0 +1,30 @@
/* global Venue */
'use strict';
const _ = require('lodash');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const models = require('../../core/models');
const getVimeoVideoInfo = require('../../helpers/vimeo.helper');
const providerComposer = (multimedia) => {
return getVimeoVideoInfo(multimedia.code)
}
const extraMethods = {
afterFetchOne: async (result, params, context) => {
if (!result) {
return result;
}
const multimedia = result.toJSON();
console.log(multimedia);
if (multimedia.provider === 'vimeo') {
multimedia.providerInfo = await providerComposer(multimedia);
}
return multimedia;
},
}
module.exports = generateService(models.MultimediaFile, extraMethods);