From 644d5614b99b33793475c79363eace54360d4a64 Mon Sep 17 00:00:00 2001 From: IluaAir Date: Sun, 10 Aug 2025 20:51:25 +0300 Subject: [PATCH] add get filtered --- src/repository/base.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/repository/base.py b/src/repository/base.py index 3f8d378..8a61a9f 100644 --- a/src/repository/base.py +++ b/src/repository/base.py @@ -1,3 +1,5 @@ +from typing import Any + from pydantic import BaseModel from sqlalchemy import delete, insert, select @@ -10,6 +12,12 @@ class BaseRepo: def __init__(self, session): self.session = session + async def get_filtered(self, *filter, **filter_by) -> list[BaseModel | Any]: + query = select(self.model).filter(*filter).filter_by(**filter_by) + result = await self.session.execute(query) + model = result.scalars().one_or_none() + return model + async def create_one(self, data: BaseModel): statement = insert(self.model).values(data.model_dump()).returning(self.model) result = await self.session.execute(statement) @@ -22,11 +30,9 @@ class BaseRepo: model = result.scalars().one_or_none() return model - async def get_all(self) -> list[model]: - query = select(self.model) - result = await self.session.execute(query) - models = result.scalars().all() - return models + async def get_all(self, *args, **kwargs) -> list[model]: + result = await self.get_filtered() + return result async def delete_one(self, **filter_by) -> None: await self.session.execute(delete(self.model).filter_by(**filter_by))