1+ """
2+ Database
3+ """
4+
5+ from typing import NoReturn , Self
6+
17from sqlalchemy .ext .asyncio import (AsyncEngine , async_sessionmaker ,
28 create_async_engine )
39from sqlmodel .ext .asyncio .session import AsyncSession
915class Database :
1016 _instance = None
1117
12- def __new__ (cls , * args , ** kwargs ):
18+ def __new__ (cls , * args , ** kwargs ) -> Self :
1319 if cls ._instance is None :
1420 cls ._instance = super (Database , cls ).__new__ (cls )
1521 return cls ._instance
@@ -24,13 +30,13 @@ def __init__(
2430 self .session = session
2531 self .initialized = True
2632
27- async def __set_async_engine (self ) -> None :
33+ async def __set_async_engine (self ) -> NoReturn :
2834 if self .engine is None :
2935 self .engine = create_async_engine (
3036 settings .pg_dsn .unicode_string (), echo = False , future = True
3137 )
3238
33- async def __set_async_session (self ) -> None :
39+ async def __set_async_session (self ) -> NoReturn :
3440 if self .session is None :
3541 self .session = async_sessionmaker (
3642 autocommit = False ,
@@ -40,16 +46,16 @@ async def __set_async_session(self) -> None:
4046 expire_on_commit = False ,
4147 )()
4248
43- async def __set_repositories (self ) -> None :
49+ async def __set_repositories (self ) -> NoReturn :
4450 if self .session is not None :
4551 self .user = repos .UserRepo (session = self .session )
4652
47- async def __aenter__ (self ):
53+ async def __aenter__ (self ) -> Self :
4854 await self .__set_async_engine ()
4955 await self .__set_async_session ()
5056 await self .__set_repositories ()
5157 return self
5258
53- async def __aexit__ (self , exc_type , exc_value , traceback ):
59+ async def __aexit__ (self , exc_type , exc_value , traceback ) -> NoReturn :
5460 if self .session is not None :
5561 await self .session .close ()
0 commit comments