Skip to content

Commit 4fe77f9

Browse files
committed
perf: Allows delete multiple instances.
1 parent 03cf5db commit 4fe77f9

2 files changed

Lines changed: 8 additions & 6 deletions

File tree

sqlalchemy_database/_abc_async_database.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class AbcAsyncDatabase(metaclass=abc.ABCMeta):
7979
execution_options: Optional[_ExecuteOptions] = None,
8080
session: Union[Session, AsyncSession, None] = None,
8181
) -> Optional[_T]: ...
82-
async def async_delete(self, instance: Any) -> None: ...
82+
async def async_delete(self, *instances: Any) -> None: ...
8383
async def async_save(
8484
self, *instances: Any, refresh: bool = False, session: Union[Session, AsyncSession, None] = None
8585
) -> None: ...

sqlalchemy_database/database.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,11 @@ async def get(
329329
)
330330
return result
331331

332-
async def delete(self, instance: Any) -> None:
333-
"""Deletes an instance object."""
332+
async def delete(self, *instances: Any) -> None:
333+
"""Delete instances of given objects list."""
334334
async with await self._executor_maker() as session:
335-
await session.delete(instance)
335+
for instance in instances:
336+
await session.delete(instance)
336337
await session.commit()
337338

338339
async def save(self, *instances: Any, refresh: bool = False, session: Optional[AsyncSession] = None) -> None:
@@ -553,9 +554,10 @@ def get(
553554
)
554555
return result
555556

556-
def delete(self, instance: Any) -> None:
557+
def delete(self, *instances: Any) -> None:
557558
with self._executor_maker() as session:
558-
session.delete(instance)
559+
for instance in instances:
560+
session.delete(instance)
559561
session.commit()
560562

561563
def save(self, *instances: Any, refresh: bool = False, session: Optional[Session] = None) -> None:

0 commit comments

Comments
 (0)