fix(card): 修复卡片批量删除未全部删除

feat(db): 新增`deletes`方法, 删除方法调整为sql `delete`
This commit is contained in:
xingc
2025-04-29 15:42:22 +08:00
parent 9ae7518a08
commit 2611ab7587
2 changed files with 14 additions and 11 deletions

View File

@@ -7,7 +7,7 @@
from datetime import datetime from datetime import datetime
from typing import List, Optional, Union, NewType, Dict, Any, Tuple 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.ext.asyncio import AsyncSession
from sqlalchemy.future import select from sqlalchemy.future import select
@@ -137,17 +137,20 @@ class CRUD:
async def delete(self, filters: dict, model: Model = None) -> bool: async def delete(self, filters: dict, model: Model = None) -> bool:
model = model or self.model 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)) *self.build_filter_conditions(filters, model))
) )
record = result.scalars().first()
if not record:
return False
await self.session.delete(record)
await self.session.commit() 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: async def total(self, filters: dict, model: Model = None) -> int:
model = model or self.model model = model or self.model

View File

@@ -303,7 +303,7 @@ async def delete_card(
): ):
# 删除关联关系 # 删除关联关系
db_crud = CRUD(db_session, UserCollection) db_crud = CRUD(db_session, UserCollection)
state = await db_crud.delete( state = await db_crud.deletes(
filters={ filters={
'card_id__in': payload.card_ids, 'card_id__in': payload.card_ids,
'user_id': login_user.user_id 'user_id': login_user.user_id
@@ -313,7 +313,7 @@ async def delete_card(
if state is True: if state is True:
# 删除原始卡片(自定义) # 删除原始卡片(自定义)
db_crud = CRUD(db_session, Card) db_crud = CRUD(db_session, Card)
await db_crud.delete( await db_crud.deletes(
filters={ filters={
'id__in': payload.card_ids, 'id__in': payload.card_ids,
'create_user_id': login_user.user_id, 'create_user_id': login_user.user_id,