From 79000196d9840b662133ef21a8e3f04c50d14c62 Mon Sep 17 00:00:00 2001 From: kimatata <117462761+kimatata@users.noreply.github.com> Date: Sat, 7 Jun 2025 22:05:28 +0900 Subject: [PATCH] fix: projects not showing up despite being a member of the project (#237) --- backend/routes/projects/index.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/backend/routes/projects/index.js b/backend/routes/projects/index.js index 8bde248..032eac2 100644 --- a/backend/routes/projects/index.js +++ b/backend/routes/projects/index.js @@ -1,11 +1,14 @@ const express = require('express'); const router = express.Router(); -const defineProject = require('../../models/projects'); const { DataTypes, Op } = require('sequelize'); +const defineProject = require('../../models/projects'); +const defineMember = require('../../models/members'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); const Project = defineProject(sequelize, DataTypes); + const Member = defineMember(sequelize, DataTypes); + Project.hasMany(Member, { foreignKey: 'projectId' }); router.get('/', verifySignedIn, async (req, res) => { try { @@ -17,9 +20,24 @@ module.exports = function (sequelize) { }, }); } else { + // public projects, owned projects, participated projects will be returned projects = await Project.findAll({ + include: [ + { + model: Member, + attributes: [], + where: { + userId: req.userId, + }, + required: false, + }, + ], where: { - [Op.or]: [{ isPublic: true }, { userId: req.userId }], + [Op.or]: [ + { isPublic: true }, + { userId: req.userId }, + sequelize.where(sequelize.col('Members.userId'), req.userId), + ], }, }); }