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 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

View File

@@ -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,