Большие изменения с добавленем Alembic
This commit is contained in:
7
backend-app/core/models/__init__.py
Normal file
7
backend-app/core/models/__init__.py
Normal file
@ -0,0 +1,7 @@
|
||||
__all__ = (
|
||||
"db_helper",
|
||||
"Base"
|
||||
)
|
||||
from .db_helper import db_helper
|
||||
from .base import Base
|
||||
from repo.models import LoginModel, UserModel
|
5
backend-app/core/models/base.py
Normal file
5
backend-app/core/models/base.py
Normal file
@ -0,0 +1,5 @@
|
||||
from sqlalchemy.orm import DeclarativeBase
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
pass
|
||||
|
41
backend-app/core/models/db_helper.py
Normal file
41
backend-app/core/models/db_helper.py
Normal file
@ -0,0 +1,41 @@
|
||||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncEngine, async_sessionmaker, AsyncSession
|
||||
from typing import AsyncGenerator
|
||||
from core.settings import settings
|
||||
class DatabaseHelper:
|
||||
def __init__(
|
||||
self,
|
||||
url: str,
|
||||
echo:bool=False,
|
||||
echo_pool:bool=False,
|
||||
pool_size: int = 5,
|
||||
max_overflow: int =10,
|
||||
) -> None:
|
||||
self.engine: AsyncEngine = create_async_engine(
|
||||
url=url,
|
||||
echo=echo,
|
||||
echo_pool=echo_pool,
|
||||
pool_size=pool_size,
|
||||
max_overflow = max_overflow
|
||||
)
|
||||
self.session_factory: async_sessionmaker[AsyncSession] = async_sessionmaker(
|
||||
bind= self.engine,
|
||||
autoflush=False,
|
||||
autocommit=False,
|
||||
expire_on_commit=False
|
||||
)
|
||||
|
||||
async def dispose(self) -> None:
|
||||
await self.engine.dispose()
|
||||
|
||||
async def session_getter(self) -> AsyncGenerator[AsyncSession,None]:
|
||||
async with self.session_factory() as session:
|
||||
yield session
|
||||
|
||||
db_helper = DatabaseHelper(
|
||||
url = settings.db.url,
|
||||
echo = settings.db.echo,
|
||||
echo_pool = settings.db.echo_pool,
|
||||
pool_size = settings.db.pool_size,
|
||||
max_overflow = settings.db.max_overflow,
|
||||
|
||||
)
|
Reference in New Issue
Block a user