diff --git a/core/db/crud.py b/core/db/crud.py index 5070be1..b40f1bd 100644 --- a/core/db/crud.py +++ b/core/db/crud.py @@ -149,6 +149,14 @@ class CRUD: await self.session.commit() return True + async def total(self, filters: dict, model: Model = None) -> int: + model = model or self.model + + result = await self.session.execute(select(func.count()).filter( + *self.build_filter_conditions(filters, model)) + ) + return result.scalar() + def build_filter_conditions(self, filters: Dict[str, Any], model: Model) -> tuple: conditions = [] diff --git a/core/routers/user/routes.py b/core/routers/user/routes.py index 633e5d9..06cb6ad 100644 --- a/core/routers/user/routes.py +++ b/core/routers/user/routes.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from core.base import schema as base_schema from core.db.crud import CRUD from core.db.engine import get_async_session -from core.db.models import User, UserFollows +from core.db.models import User, UserFollows, UserCollection from core.routers.auth.schema import LoginUser from core.routers.auth.services import get_current_user_form_http @@ -33,6 +33,12 @@ async def get_me_info( if user is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail='用户不存在') + user.displayed_card_total = await db_crud.total( + model=UserCollection, + filters={ + 'user_id': login_user.user_id, + 'displayed': True} + ) return {'data': user}