From 2a85be2f6fe9a0c5e19e0b3a259462a82badc812 Mon Sep 17 00:00:00 2001 From: LoRiot Date: Sat, 22 Oct 2022 17:42:02 +0300 Subject: [PATCH] Show projects related to the user's chat --- handlers/projects/search.py | 7 +++++-- services/repositories.py | 12 +++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/handlers/projects/search.py b/handlers/projects/search.py index 2dc4b1c..eb9e05d 100644 --- a/handlers/projects/search.py +++ b/handlers/projects/search.py @@ -4,7 +4,7 @@ from aiogram import types from aiogram.dispatcher import FSMContext from states.project import ProjectStates -from services.repositories import Repos, ProjectRepo +from services.repositories import Repos, ProjectRepo, UserRepo async def ask_for_project_name(message: types.Message, state: FSMContext): @@ -16,7 +16,10 @@ async def search_for_projects( message: types.Message, state: FSMContext, repo: Repos ): await state.reset_state() - projects = await repo.get_repo(ProjectRepo).get(message.text) + user = await repo.get_repo(UserRepo).get(message.from_user.id) + projects = await repo.get_repo(ProjectRepo).get( + message.text, user["chat_id"] + ) for project in projects: await message.answer( diff --git a/services/repositories.py b/services/repositories.py index 4b34053..669128e 100644 --- a/services/repositories.py +++ b/services/repositories.py @@ -27,8 +27,8 @@ class UserRepo(BaseRepo): ) async def get(self, user_id: int) -> Record: - return await self.conn.fetchval( - "SELECT user_id FROM users WHERE user_id = $1", user_id + return await self.conn.fetchrow( + "SELECT user_id, chat_id FROM users WHERE user_id = $1", user_id ) @@ -42,8 +42,10 @@ class ProjectRepo(BaseRepo): user_id, *args ) - async def get(self, name: str) -> Record: + async def get(self, name: str, chat_id: int) -> Record: return await self.conn.fetch( - "SELECT id, name, description FROM projects WHERE name LIKE $1", - f"%{name}%" + "SELECT id, name, description FROM projects " + "INNER JOIN users ON projects.creator = users.user_id " + "WHERE users.chat_id = $1 AND name LIKE $2", + chat_id, f"%{name}%" )