11import json
22from datetime import datetime , timezone
3- from uuid import UUID
43
54from sqlalchemy import func , select
65from sqlalchemy .ext .asyncio import AsyncSession
1110
1211
1312class SQLAlchemyApiKeyRepository (ApiKeyRepository ):
14- def __init__ (self , session : AsyncSession , tenant_id : UUID | None = None ):
13+ def __init__ (self , session : AsyncSession , tenant_id : int | None = None ):
1514 self ._session = session
1615 self ._tenant_id = tenant_id
1716
1817 async def create (self , api_key : ApiKey ) -> ApiKey :
1918 model = ApiKeyModel (
20- id = str (api_key .id ),
2119 key_prefix = api_key .key_prefix ,
2220 key_hash = api_key .key_hash ,
2321 name = api_key .name ,
@@ -28,10 +26,12 @@ async def create(self, api_key: ApiKey) -> ApiKey:
2826 )
2927 self ._session .add (model )
3028 await self ._session .flush ()
29+ await self ._session .refresh (model )
30+ api_key .id = model .id
3131 return api_key
3232
33- async def get_by_id (self , id : UUID ) -> ApiKey | None :
34- stmt = select (ApiKeyModel ).where (ApiKeyModel .id == str ( id ) )
33+ async def get_by_id (self , id : int ) -> ApiKey | None :
34+ stmt = select (ApiKeyModel ).where (ApiKeyModel .id == id )
3535 if self ._tenant_id :
3636 stmt = stmt .where (ApiKeyModel .tenant_id == self ._tenant_id )
3737 result = await self ._session .execute (stmt )
@@ -60,20 +60,20 @@ async def count(self) -> int:
6060 result = await self ._session .execute (stmt )
6161 return result .scalar () or 0
6262
63- async def revoke (self , id : UUID ) -> None :
64- model = await self ._session .get (ApiKeyModel , str ( id ) )
63+ async def revoke (self , id : int ) -> None :
64+ model = await self ._session .get (ApiKeyModel , id )
6565 if model :
6666 model .is_active = False
6767
68- async def update_last_used (self , id : UUID ) -> None :
69- model = await self ._session .get (ApiKeyModel , str ( id ) )
68+ async def update_last_used (self , id : int ) -> None :
69+ model = await self ._session .get (ApiKeyModel , id )
7070 if model :
7171 model .last_used_at = datetime .now (timezone .utc )
7272
7373 @staticmethod
7474 def _to_entity (model : ApiKeyModel ) -> ApiKey :
7575 return ApiKey (
76- id = UUID ( model .id ) ,
76+ id = model .id ,
7777 key_prefix = model .key_prefix ,
7878 key_hash = model .key_hash ,
7979 name = model .name ,
0 commit comments