diff --git a/modules/auth/user.model.js b/modules/auth/user.model.js index 4ed5823..c1a88d9 100644 --- a/modules/auth/user.model.js +++ b/modules/auth/user.model.js @@ -50,7 +50,7 @@ module.exports = function (sequelize, DataTypes) { defaultValue: null, }, }, { - tableName: 'user', + tableName: 'users', freezeTableName: true, timestamps: true, }); @@ -62,8 +62,10 @@ module.exports = function (sequelize, DataTypes) { }); User.Entity = User.belongsTo(models.Entity, { foreignKey: 'entityId' }); User.Devices = User.hasMany(models.UserDevice, { foreignKey: 'userId' }); - - //User.Comments = User.hasMany(models.UserComment, { foreignKey: 'UserId' }); + User.Comments = User.hasMany(models.Comment, { foreignKey: 'userId' }); + User.EventsReservations = User.hasMany(models.EventReservation, { foreignKey: 'userId' }); + User.EventsInscriptions = User.hasMany(models.EventInscription, { foreignKey: 'userId' }); +// User.InscriptionsValidate = User.hasMany(models.EventIncription, { foreignkey: 'validateUserId'}) //User.Reactions = User.hasMany(models.UserReaction, { foreignKey: 'UserId' }); }; diff --git a/modules/blog/post.model.js b/modules/blog/post.model.js index cdf3a01..c6746c0 100644 --- a/modules/blog/post.model.js +++ b/modules/blog/post.model.js @@ -35,7 +35,7 @@ module.exports = function (sequelize, DataTypes) { through: models.PostCategory, foreignKey: 'postId' }); - Post.Comments = Post.hasMany(models.Comment, { foreignKey: 'postId' }); + //Post.Comments = Post.hasMany(models.Comment, { foreignKey: 'postId' }); //Post.Reactions = Post.hasMany(models.PostReaction, { foreignKey: 'postId' }); //Post.User = Post.belongsTo(models.User, { foreignKey: 'userId' }); /* diff --git a/modules/comments/comment.model.js b/modules/comments/comment.model.js index 5a4b20a..b0ea2bc 100644 --- a/modules/comments/comment.model.js +++ b/modules/comments/comment.model.js @@ -5,42 +5,62 @@ module.exports = function (sequelize, DataTypes) { defaultValue: DataTypes.UUIDV4, primaryKey: true }, - entityType: { - field: 'type', - type: DataTypes.STRING, - allowNull: false + entityId: { + type: DataTypes.UUID, + allowNull: false, }, - entity: { - type: DataTypes.VIRTUAL(DataTypes.UUID, ['conferenceId', 'speakerId', 'postId']), + entityName: { + type: DataTypes.STRING, + allowNull: false, + }, + type: { + type: DataTypes.STRING, + allowNull: false, }, content: { type: DataTypes.STRING, allowNull: false }, - user: { - type: DataTypes.VIRTUAL(DataTypes.UUID, ['userId']), - }, - /*conference: { - type: DataTypes.VIRTUAL(DataTypes.UUID, ['conferenceId']), - },*/ - post: { - type: DataTypes.VIRTUAL(DataTypes.UUID, ['postId']), - }, - /*speaker: { - type: DataTypes.VIRTUAL(DataTypes.UUID, ['speakerId']), - },*/ - + entity: { + type: DataTypes.VIRTUAL, + get: function () { + const name = this.get('entityName'); + const id = this.get('entityId'); + let modelName = ''; + switch (name) { + case 'post': + modelName = 'Post'; + break; + case 'speaker': + modelName = 'Speaker' + break; + + case 'event': + modelName = 'Event'; + break; + + default: + break; + } + + return sequelize.models[modelName].findOne(id); + } + } }, { + indexes: [{ + unique: false, + fields: ['entityId'] + }], tableName: 'comments', freezeTableName: true, timestamps: true, - }); + Comment.associate = function (models) { Comment.User = Comment.belongsTo(models.User, { foreignKey: 'userId', 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 }); }; diff --git a/modules/entities/entity.model.js b/modules/entities/entity.model.js index 57422ac..9c79f2a 100644 --- a/modules/entities/entity.model.js +++ b/modules/entities/entity.model.js @@ -20,9 +20,8 @@ module.exports = function (sequelize, DataTypes) { through: models.EntityEntitiesTypes, foreignKey: 'entityId' }); - Entity.Users = Entity.hasMany(models.User, { - foreignKey: 'entityId' - }); + Entity.Users = Entity.hasMany(models.User, { foreignKey: 'entityId' }); + Entity.EventsReservations = Entity.hasMany(models.EventReservation, { foreignKey: 'entityId' }); }; return Entity; }; \ No newline at end of file diff --git a/modules/events/event.model.js b/modules/events/event.model.js index 7c13601..acf62e6 100644 --- a/modules/events/event.model.js +++ b/modules/events/event.model.js @@ -64,9 +64,6 @@ module.exports = function (sequelize, DataTypes) { type: DataTypes.UUID, foreignKey: true, }, - schedule: { - type: DataTypes.TEXT, - }, venueId: { type: DataTypes.UUID, foreignKey: true, @@ -80,9 +77,8 @@ module.exports = function (sequelize, DataTypes) { url_registration: { type: DataTypes.STRING, }, - user_id: { - type: DataTypes.UUID, - foreignKey: true, + marketingList: { + type: DataTypes.STRING, }, }, { tableName: 'events', @@ -96,16 +92,12 @@ module.exports = function (sequelize, DataTypes) { Event.UserCreate = Event.belongsTo(models.User, { foreignKey: 'userId' }); Event.Venue = Event.belongsTo(models.Venue, { foreignKey: 'venueId' }); - Event.Speakers = Event.belongsToMany(models.Speaker, { - through: models.EventSpeaker, - foreignKey: 'eventId' - }); - - Event.Multimedias = Event.belongsToMany(models.MultimediaFile, { - through: models.MultimediaEvent, - foreignKey: 'eventId', - otherKey: 'type' - }); + Event.Schedule = Event.hasMany(models.EventSchedule, { foreignKey: 'eventId' }); + Event.EventReservations = Event.hasMany(models.EventReservation, { foreignKey: 'eventId' }); + Event.EventInscriptions = Event.hasMany(models.EventInscription, { foreignKey: 'eventId' }); + Event.EventQuestions = Event.hasMany(models.EventQuestion, { foreignKey: 'eventId' }); + //No puede haber clave foranea con entityId ya que podrĂ­a repetirse ID con el caso de speakerId, un multimedia de un speaker + //Event.Multimedias = Event.hasMany(models.Multimedia, { foreignKey: 'eventId' }); }; diff --git a/modules/events/event_questions.model.js b/modules/events/event_questions.model.js new file mode 100644 index 0000000..7c18288 --- /dev/null +++ b/modules/events/event_questions.model.js @@ -0,0 +1,41 @@ +'use strict'; + +module.exports = function (sequelize, DataTypes) { + const EventQuestion = sequelize.define('EventQuestion', { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true, + }, + description: { + type: DataTypes.STRING, + }, + anonimous: { + type: DataTypes.INTEGER, + allowNull: true + }, + answered: { + type: DataTypes.INTEGER, + allowNull: true + }, + discared: { + type: DataTypes.INTEGER, + allowNull: true + }, + answer: { + type: DataTypes.TEXT, + }, + }, { + tableName: 'events_questions', + freezeTableName: true, + timestamps: true, + }); + + EventQuestion.associate = function (models) { + EventQuestion.Event = EventQuestion.belongsTo(models.Event, { foreignKey: 'eventId' }); + EventQuestion.Speaker = EventQuestion.belongsTo(models.Speaker, { foreignKey: 'speakerId' }); + EventQuestion.UserCreate = EventQuestion.belongsTo(models.User, { foreignKey: 'userId' }); + }; + + return EventQuestion; +}; \ No newline at end of file diff --git a/modules/events/event_schedule.model.js b/modules/events/event_schedule.model.js new file mode 100644 index 0000000..021f4c0 --- /dev/null +++ b/modules/events/event_schedule.model.js @@ -0,0 +1,40 @@ +'use strict'; + +module.exports = function (sequelize, DataTypes) { + const EventSchedule = sequelize.define('EventSchedule', { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true + }, + eventId: { + type: DataTypes.UUID, + allowNull: false, + }, + speakerId: { + type: DataTypes.UUID, + }, + order: { + type: DataTypes.INTEGER, + allowNull: false, + }, + description: { + type: DataTypes.STRING, + }, + }, { + indexes: [{ + unique: false, + fields: ['speakerId'] + }], + tableName: 'events_schedules', + freezeTableName: true, + timestamps: true, + }); + + EventSchedule.associate = function (models) { + EventSchedule.Event = EventSchedule.belongsTo(models.Event, { foreignKey: 'eventId' }); + }; + + + return EventSchedule; +}; \ No newline at end of file diff --git a/modules/events/event_speaker.model.js b/modules/events/event_speaker.model.js deleted file mode 100644 index 7895f58..0000000 --- a/modules/events/event_speaker.model.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -module.exports = function (sequelize, DataTypes) { - const EventSpeaker = sequelize.define('EventSpeaker', { - eventId: { - type: DataTypes.UUID, - primaryKey: true, - allowNull: false, - }, - speakerId: { - type: DataTypes.UUID, - primaryKey: true, - allowNull: false, - }, - order: { - type: DataTypes.INTEGER, - }, - }, { - tableName: 'events_speakers', - freezeTableName: true, - timestamps: true, - }); - - return EventSpeaker; -}; \ No newline at end of file diff --git a/modules/events/events_inscriptions.model.js b/modules/events/events_inscriptions.model.js new file mode 100644 index 0000000..5493865 --- /dev/null +++ b/modules/events/events_inscriptions.model.js @@ -0,0 +1,43 @@ +'use strict'; + +module.exports = function (sequelize, DataTypes) { + const EventInscription = sequelize.define('EventInscription', { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true, + }, + date: { + type: DataTypes.DATE, + }, + code_ticket: { + type: DataTypes.INTEGER, + }, + type: { + type: DataTypes.STRING, + allowNull: false, + defaultValue: 'regular' //grupal, invitacion-regular, invitation-grupal + }, + source: { + type: DataTypes.STRING, //app, web + }, + marketing_memberId: { + type: DataTypes.STRING, + }, + validated: { + type: DataTypes.DATE, + }, + }, { + tableName: 'events_inscriptions', + freezeTableName: true, + timestamps: true, + }); + + EventInscription.associate = function (models) { + EventInscription.Event = EventInscription.belongsTo(models.Event, { foreignKey: 'eventId' }); + EventInscription.User = EventInscription.belongsTo(models.User, { foreignKey: 'userId' }); + EventInscription.UserValidate = EventInscription.belongsTo(models.User, { foreignKey: 'validateUserId' }); + }; + + return EventInscription; +}; \ No newline at end of file diff --git a/modules/events/events_reservations.model.js b/modules/events/events_reservations.model.js new file mode 100644 index 0000000..bee7a32 --- /dev/null +++ b/modules/events/events_reservations.model.js @@ -0,0 +1,76 @@ +'use strict'; + +module.exports = function (sequelize, DataTypes) { + const EventReservation = sequelize.define('EventReservation', { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true, + }, + init_avalible_date: { + type: DataTypes.DATE, + }, + end_avalible_date: { + type: DataTypes.DATE, + }, + gmt: { + type: DataTypes.INTEGER, + defaultValue: 1, + }, + state: { + type: DataTypes.STRING, + allowNull: false, + defaultValue: 'borrador' + }, + assistants: { + type: DataTypes.INTEGER, + }, + confirmed: { + type: DataTypes.INTEGER, + }, + allow_multiple: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: false, + }, + multiple_limit: { + type: DataTypes.INTEGER, + }, + description: { + type: DataTypes.STRING, + }, + code: { + type: DataTypes.STRING, + allowNull: false, + }, + color: { + type: DataTypes.STRING, + allowNull: false, + }, + allow_overflow: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: false, + }, + overflow_event_reservationId: { + type: DataTypes.UUID, + foreignKey: true, + }, + marketingList: { + type: DataTypes.STRING, + }, + }, { + tableName: 'events_reservations', + freezeTableName: true, + timestamps: true, + }); + + EventReservation.associate = function (models) { + EventReservation.OverflowEventReservation = EventReservation.belongsTo(models.EventReservation, { foreignKey: 'overflow_event_reservationId' }); + EventReservation.Entity = EventReservation.belongsTo(models.Entity, { foreignKey: 'entityId' }); + EventReservation.Event = EventReservation.belongsTo(models.Event, { foreignKey: 'eventId' }); + EventReservation.UserCreate = EventReservation.belongsTo(models.User, { foreignKey: 'userId' }); + }; + + return EventReservation; +}; \ No newline at end of file diff --git a/modules/multimedia/multimedia_events.model.js b/modules/multimedia/multimedia_events.model.js deleted file mode 100644 index c44b22d..0000000 --- a/modules/multimedia/multimedia_events.model.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -module.exports = function (sequelize, DataTypes) { - const MultimediaEvent = sequelize.define('MultimediaEvent', { - multimediafileId: { - type: DataTypes.UUID, - foreignKey: true, - primaryKey: true, - }, - eventId: { - type: DataTypes.UUID, - foreignKey: true, - primaryKey: true, - }, - type: { - type: DataTypes.STRING, - primaryKey: true, - }, - }, { - tableName: 'multimedia_events', - freezeTableName: true, - timestamps: true, - }); - - return MultimediaEvent; -}; \ No newline at end of file diff --git a/modules/multimedia/multimedia_file.model.js b/modules/multimedia/multimedia_file.model.js index 5599dd2..cfec53e 100644 --- a/modules/multimedia/multimedia_file.model.js +++ b/modules/multimedia/multimedia_file.model.js @@ -40,12 +40,7 @@ module.exports = function (sequelize, DataTypes) { MultimediaFile.MultimediaType = MultimediaFile.belongsTo(models.MultimediaType, { foreignKey: 'typeId' }); MultimediaFile.UserCreate = MultimediaFile.belongsTo(models.User, { foreignKey: 'userId' }); - MultimediaFile.Events = MultimediaFile.belongsToMany(models.Event, { - through: models.MultimediaEvent, - foreignKey: 'multimediafileId', - otherKey: 'type' - }); - + MultimediaFile.Multimedias = MultimediaFile.hasMany(models.Multimedia, { foreignKey: 'multimediafileId' }); }; return MultimediaFile; diff --git a/modules/multimedia/multimedia_posts.js b/modules/multimedia/multimedia_posts.js deleted file mode 100644 index a4a4dcb..0000000 --- a/modules/multimedia/multimedia_posts.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -module.exports = function (sequelize, DataTypes) { - const MultimediaPost = sequelize.define('MultimediaPost', { - multimediafileId: { - type: DataTypes.UUID, - foreignKey: true, - primaryKey: true, - }, - postId: { - type: DataTypes.UUID, - foreignKey: true, - primaryKey: true, - }, - type: { - type: DataTypes.STRING, - primaryKey: true, - }, - }, { - tableName: 'multimedia_posts', - freezeTableName: true, - timestamps: true, - }); - - return MultimediaPost; -}; \ No newline at end of file diff --git a/modules/multimedia/multimedia_speakers.model.js b/modules/multimedia/multimedia_speakers.model.js deleted file mode 100644 index b66a220..0000000 --- a/modules/multimedia/multimedia_speakers.model.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -module.exports = function (sequelize, DataTypes) { - const MultimediaSpeaker = sequelize.define('MultimediaSpeaker', { - multimediafileId: { - type: DataTypes.UUID, - foreignKey: true, - primaryKey: true, - }, - speakerId: { - type: DataTypes.UUID, - foreignKey: true, - primaryKey: true, - }, - type: { - type: DataTypes.STRING, - primaryKey: true, - }, - }, { - tableName: 'multimedia-speakers', - freezeTableName: true, - timestamps: true, - }); - - return MultimediaSpeaker; -}; \ No newline at end of file diff --git a/modules/multimedia/multimedias.model.js b/modules/multimedia/multimedias.model.js index 44b01ce..729e082 100644 --- a/modules/multimedia/multimedias.model.js +++ b/modules/multimedia/multimedias.model.js @@ -1,12 +1,16 @@ 'use strict'; module.exports = function (sequelize, DataTypes) { - const Multimedias = sequelize.define('Multimedias', { + const Multimedia = sequelize.define('Multimedia', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, }, + multimediafileId: { + type: DataTypes.UUID, + allowNull: false, + }, entityId: { type: DataTypes.UUID, allowNull: false, @@ -54,7 +58,9 @@ module.exports = function (sequelize, DataTypes) { timestamps: true, }); + Multimedia.associate = function (models) { + Multimedia.MultimediaFile = Multimedia.belongsTo(models.MultimediaFile, { foreignKey: 'multimediafileId' }); + }; - - return Multimedias; + return Multimedia; }; \ No newline at end of file diff --git a/modules/speakers/speaker.model.js b/modules/speakers/speaker.model.js index 280c743..4fbd2dd 100644 --- a/modules/speakers/speaker.model.js +++ b/modules/speakers/speaker.model.js @@ -12,7 +12,7 @@ module.exports = function (sequelize, DataTypes) { allowNull: false, }, description: { - type: DataTypes.STRING, + type: DataTypes.TEXT, }, short_description: { type: DataTypes.STRING, @@ -29,7 +29,7 @@ module.exports = function (sequelize, DataTypes) { youtube: { type: DataTypes.STRING, }, - linkedlin: { + linkedin: { type: DataTypes.STRING, }, instagram: { @@ -47,10 +47,6 @@ module.exports = function (sequelize, DataTypes) { type: DataTypes.UUID, foreignKey: true, }, - user_id: { - type: DataTypes.UUID, - foreignKey: true, - }, }, { tableName: 'speakers', freezeTableName: true, @@ -66,11 +62,8 @@ module.exports = function (sequelize, DataTypes) { foreignKey: 'speakerId' }); - Speaker.Events = Speaker.belongsToMany(models.Event, { - through: models.EventSpeaker, - foreignKey: 'speakerId' - }); - + Speaker.EventSchedules = Speaker.hasMany(models.EventSchedule, { foreignKey: 'speakerId' }); + Speaker.EventQuestions = Speaker.hasMany(models.EventQuestion, { foreignKey: 'speakerId' }); /* Speaker.Multimedias = Speaker.belongsToMany(models.MultimediaFile, { through: models.MultimediaSpeaker,