diff --git a/src/database/models/accommodations.js b/src/database/models/accommodations.js index 5ff001c..55bd209 100644 --- a/src/database/models/accommodations.js +++ b/src/database/models/accommodations.js @@ -37,6 +37,10 @@ module.exports = (sequelize, DataTypes) => { sourceKey: "id", as: "ratings" }); + accommodations.hasMany(models.likes, { + targetKey: "accommodationId", + sourceKey: "id" + }); accommodations.belongsTo(models.users, { targetKey: 'id', diff --git a/src/database/models/booking.js b/src/database/models/booking.js index 325a9c3..4e15cfe 100644 --- a/src/database/models/booking.js +++ b/src/database/models/booking.js @@ -15,6 +15,11 @@ module.exports = (sequelize, DataTypes) => { sourceKey: "roomId", targetKey: "id", }); + booking.hasMany(models.likes, { + foreignKey: "accommodationId", + onDelete: 'CASCADE', + onUpdate: 'CASCADE', + }); }; return booking; diff --git a/src/services/AccommodationService.js b/src/services/AccommodationService.js index ca88bc5..f6b9df3 100644 --- a/src/services/AccommodationService.js +++ b/src/services/AccommodationService.js @@ -1,6 +1,6 @@ import Sequelize from 'sequelize'; import { - accommodations, rooms, accommodationImages, ratings, likes, sequelize, cities, users, userProfile + accommodations, rooms, accommodationImages, ratings, likes, sequelize, cities, users, userProfile, } from '../database/models'; import CommonQueries from './CommonQueries'; @@ -160,6 +160,8 @@ class AccommodationService { */ static async getAccommodationLikes(req) { const { accommodationId } = req.params; + const { id } = req.user; + const likeCounter = await CommonQueries.count(likes, { where: { accommodationId, @@ -172,7 +174,20 @@ class AccommodationService { disliked: true } }); - return { likeCounter, dislikeCounter }; + + const joinedTable = await CommonQueries.findAll(likes, { + where: { accommodationId, userId: id }, + include: [{ + model: accommodations, + where: { id: accommodationId } + }], + }); + + const [allAboutWhoReacted] = joinedTable; + + return { + likeCounter, dislikeCounter, allAboutWhoReacted + }; } /**