This commit is contained in:
David Arranz 2019-07-24 16:50:41 +02:00
parent cd5d39bc97
commit 97ee184ec5
8 changed files with 84 additions and 14 deletions

View File

@ -17,6 +17,10 @@ module.exports = {
port: process.env.PORT || 18888 port: process.env.PORT || 18888
}, },
cdn: {
hostname: "https://cdnapp2.loquedeverdadimporta.org",
},
paginate: { paginate: {
limit: 10, limit: 10,
maxLimit: 50 maxLimit: 50

View File

@ -15,13 +15,22 @@ module.exports = {
*/ */
}, },
session: { session: {
secret_token: process.env.SECRET_TOKEN || "B57J=7B`NQ$y98|~5;hc715bo09^5oz8NR+]n9r~215B91Nd9P%25_N6r!GHcOKp|18y5-73Dr5^@9k7n]5l<-41D1o", secret_token: process.env.SECRET_TOKEN || "B57J=7B`NQ$y98|~5;hc715bo09^5oz8NR+]n9r~215B91Nd9P%25_N6r!GHcOKp|18y5-73Dr5^@9k7n]5l<-41D1o",
token_expires_in: '365d' token_expires_in: '365d'
}, },
server: { server: {
hostname: process.env.HOSTNAME || '127.0.0.1', hostname: process.env.HOSTNAME || '127.0.0.1',
port: process.env.PORT || 18888 port: process.env.PORT || 18888
} },
cdn: {
hostname: "https://cdnapp2.loquedeverdadimporta.org",
},
paginate: {
limit: 10,
maxLimit: 50
}
} }

31
helpers/cdn.helper.js Normal file
View File

@ -0,0 +1,31 @@
const config = require('../config');
const assetsUrl = config.cdn.hostname;
const CDN_PATHS = {
BLOG: "blog/",
CITIES: "cities/",
PROFILE: "profile/",
SPEAKERS: "speakers/",
WALLPAPERS: "wallpapers/"
};
const getCDNMediaUrl = (mediaUri) => {
if (mediaUri) {
const pathParsed = mediaUri.indexOf("media") == 0 ? mediaUri.substr("media/".length, mediaUri.length) : mediaUri;
return encodeURI(encodeURI(`${assetsUrl}/${pathParsed}`));
}
else {
return encodeURI(dummyMedia);
}
}
const getCDNCityMediaUrl = (cityName) => encodeURI(`${assetsUrl}/${CDN_PATHS.CITIES}/${cityName}.jpg`);
module.exports = {
getCDNCityMediaUrl,
getCDNMediaUrl
}

View File

@ -16,7 +16,7 @@ routes.get('/posts', isLoggedUser,
}), }),
PaginateMiddleware.middleware(), PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "date" }), SortMiddleware.middleware({ default: "date" }),
blogController.find); blogController.find());
routes.post('/posts', isAdministratorUser, blogController.create); routes.post('/posts', isAdministratorUser, blogController.create);
@ -26,7 +26,8 @@ routes.get('/posts/:id', isLoggedUser,
}), }),
//PaginateMiddleware.middleware(), //PaginateMiddleware.middleware(),
//SortMiddleware.middleware({ default: "date" }), //SortMiddleware.middleware({ default: "date" }),
blogController.findOne); blogController.findOne()
);
routes.put('/posts/:id', isAdministratorUser, blogController.update); routes.put('/posts/:id', isAdministratorUser, blogController.update);

View File

@ -54,7 +54,7 @@ module.exports = function (sequelize, DataTypes) {
Comment.associate = function (models) { Comment.associate = function (models) {
Comment.User = Comment.belongsTo(models.User, { foreignKey: 'userId', constraints: false }); Comment.User = Comment.belongsTo(models.User, { foreignKey: 'userId', constraints: false, as: 'user' });
//Comment.Conference = Comment.belongsTo(models.Conference, { foreignKey: 'conferenceId', constraints: false }); //Comment.Conference = Comment.belongsTo(models.Conference, { foreignKey: 'conferenceId', constraints: false });
//Comment.Post = Comment.belongsTo(models.Post, { foreignKey: 'postId', constraints: false }); //Comment.Post = Comment.belongsTo(models.Post, { foreignKey: 'postId', constraints: false });
//Comment.Speaker = Comment.belongsTo(models.Speaker, { foreignKey: 'speakerId', constraints: false }); //Comment.Speaker = Comment.belongsTo(models.Speaker, { foreignKey: 'speakerId', constraints: false });

View File

@ -6,6 +6,7 @@ const moment = require('moment');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const Sequelize = require('sequelize'); const Sequelize = require('sequelize');
const models = require('../../core/models'); const models = require('../../core/models');
const cdnHelper = require('../../helpers/cdn.helper');
const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({ const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
@ -17,6 +18,7 @@ const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
createdAt: undefined, createdAt: undefined,
updatedAt: undefined, updatedAt: undefined,
userId: undefined, userId: undefined,
url: (multimedia.MultimediaFile.provider === 'cdn') ? cdnHelper.getCDNMediaUrl(multimedia.MultimediaFile.url) : multimedia.MultimediaFile.url,
})); }));
const speakerComposer = (speaker, context) => { const speakerComposer = (speaker, context) => {
@ -32,6 +34,7 @@ const eventComposer = (event, context) => {
if (context.scopes.includes('includeVenue')) { if (context.scopes.includes('includeVenue')) {
delete event.venue.updatedAt; delete event.venue.updatedAt;
delete event.venue.createdAt; delete event.venue.createdAt;
event.venue.image_url = cdnHelper.getCDNCityMediaUrl(event.venue.city);
}; };
let multimedias = [] let multimedias = []

View File

@ -141,6 +141,10 @@ module.exports = function (sequelize, DataTypes) {
model: sequelize.models.Comment, model: sequelize.models.Comment,
as: 'comments', as: 'comments',
required: false, required: false,
include: [{
model: sequelize.models.User,
as: 'user',
}]
}] }]
} }
}); });

View File

@ -5,6 +5,7 @@ const _ = require('lodash');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const Sequelize = require('sequelize'); const Sequelize = require('sequelize');
const models = require('../../core/models'); const models = require('../../core/models');
const cdnHelper = require('../../helpers/cdn.helper');
const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({ const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
@ -16,6 +17,7 @@ const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
createdAt: undefined, createdAt: undefined,
updatedAt: undefined, updatedAt: undefined,
userId: undefined, userId: undefined,
url: (multimedia.MultimediaFile.provider === 'cdn') ? cdnHelper.getCDNMediaUrl(multimedia.MultimediaFile.url) : multimedia.MultimediaFile.url,
})); }));
const valuesComposer = (values) => values.map(value => ({ const valuesComposer = (values) => values.map(value => ({
@ -23,6 +25,16 @@ const valuesComposer = (values) => values.map(value => ({
name: value.name, name: value.name,
})); }));
const commentsComposer = (comments) => comments.map(comment => ({
...comment,
userId: undefined,
user: {
...comment.user,
profile_picture: cdnHelper.getCDNMediaUrl(comment.user.profile_picture)
}
}))
const socialNetworksComposer = (speaker, context) => { const socialNetworksComposer = (speaker, context) => {
return { return {
@ -44,9 +56,14 @@ const socialNetworksComposer = (speaker, context) => {
}; };
const speakerComposer = (speaker, context) => { const speakerComposer = (speaker, context) => {
let multimedias = [] let multimedias = [];
if (context.scopes.includes('includeMultimedias')) { if (context.scopes.includes('includeMultimedias')) {
multimedias = multimediaComposer(speaker.multimedias) multimedias = multimediaComposer(speaker.multimedias);
};
let comments = [];
if (context.scopes.includes('includeComments')) {
comments = commentsComposer(speaker.comments);
}; };
speaker.typename = speaker.type.name; speaker.typename = speaker.type.name;
@ -60,6 +77,7 @@ const speakerComposer = (speaker, context) => {
speaker, speaker,
rrss, rrss,
{ multimedias: multimedias }, { multimedias: multimedias },
{ comments: comments },
) )
}; };