diff --git a/core/db/crud.py b/core/db/crud.py index b40f1bd..d7a9901 100644 --- a/core/db/crud.py +++ b/core/db/crud.py @@ -7,7 +7,7 @@ from datetime import datetime from typing import List, Optional, Union, NewType, Dict, Any, Tuple -from sqlalchemy import func, desc +from sqlalchemy import func, desc, delete, CursorResult from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select @@ -137,17 +137,20 @@ class CRUD: async def delete(self, filters: dict, model: Model = None) -> bool: model = model or self.model - result = await self.session.execute(select(model).filter( + result = await self.session.execute(delete(model).filter( *self.build_filter_conditions(filters, model)) ) - record = result.scalars().first() - - if not record: - return False - - await self.session.delete(record) await self.session.commit() - return True + return result.rowcount > 0 + + async def deletes(self, filters: dict, model: Model = None) -> bool: + model = model or self.model + + result = await self.session.execute(delete(model).filter( + *self.build_filter_conditions(filters, model)) + ) + await self.session.commit() + return result.rowcount > 0 async def total(self, filters: dict, model: Model = None) -> int: model = model or self.model diff --git a/core/routers/card/routes.py b/core/routers/card/routes.py index 885ce31..e406b2e 100644 --- a/core/routers/card/routes.py +++ b/core/routers/card/routes.py @@ -303,7 +303,7 @@ async def delete_card( ): # 删除关联关系 db_crud = CRUD(db_session, UserCollection) - state = await db_crud.delete( + state = await db_crud.deletes( filters={ 'card_id__in': payload.card_ids, 'user_id': login_user.user_id @@ -313,7 +313,7 @@ async def delete_card( if state is True: # 删除原始卡片(自定义) db_crud = CRUD(db_session, Card) - await db_crud.delete( + await db_crud.deletes( filters={ 'id__in': payload.card_ids, 'create_user_id': login_user.user_id,