1+ import operator
12from typing import TYPE_CHECKING
23
34from advanced_alchemy .repository import SQLAlchemyAsyncRepository
@@ -18,6 +19,9 @@ class BaseRepository(SQLAlchemyAsyncRepository[models.Deck]):
1819
1920 repository_type = BaseRepository
2021
22+ async def list_decks (self ) -> Sequence [models .Deck ]:
23+ return await self .get_many (order_by = models .Deck .id .asc ())
24+
2125 async def get_or_create (self , data : schemas .DeckCreate ) -> models .Deck :
2226 statement = postgresql .insert (models .Deck ).values (** data .model_dump ())
2327 statement = statement .on_conflict_do_update (
@@ -40,12 +44,13 @@ class BaseRepository(SQLAlchemyAsyncRepository[models.Card]):
4044 repository_type = BaseRepository
4145
4246 async def list_for_deck (self , deck_id : int ) -> Sequence [models .Card ]:
43- return await self .get_many (models .Card .deck_id == deck_id )
47+ return await self .get_many (models .Card .deck_id == deck_id , order_by = models . Card . id . asc () )
4448
4549 async def add_cards (self , deck_id : int , cards : list [schemas .CardCreate ]) -> Sequence [models .Card ]:
4650 return await self .create_many ([models .Card (** card .model_dump (), deck_id = deck_id ) for card in cards ])
4751
4852 async def upsert_cards (self , deck_id : int , cards : list [schemas .Card ]) -> Sequence [models .Card ]:
49- return await self .upsert_many (
53+ upserted = await self .upsert_many (
5054 [models .Card (** card .model_dump (exclude = {"deck_id" }), deck_id = deck_id ) for card in cards ],
5155 )
56+ return sorted (upserted , key = operator .attrgetter ("id" ))
0 commit comments