Большие изменения с добавленем Alembic
This commit is contained in:
@ -0,0 +1,4 @@
|
||||
__all__ = (
|
||||
"settings"
|
||||
)
|
||||
from .settings import settings
|
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,
|
||||
|
||||
)
|
@ -1,11 +1,25 @@
|
||||
from pydantic_settings import BaseSettings
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
from pydantic import BaseModel
|
||||
|
||||
class RunSettings(BaseModel):
|
||||
host: str = "0.0.0.0"
|
||||
port: int = 8000
|
||||
|
||||
class Settings(BaseSettings):
|
||||
run: RunSettings = RunSettings()
|
||||
class DatabaseConfig(BaseModel):
|
||||
url: str
|
||||
echo:bool=False
|
||||
echo_pool:bool=False
|
||||
pool_size: int = 50
|
||||
max_overflow: int =10
|
||||
|
||||
settings = Settings()
|
||||
class Settings(BaseSettings):
|
||||
model_config = SettingsConfigDict(
|
||||
env_file=".env",
|
||||
case_sensitive=False,
|
||||
env_nested_delimiter="__",
|
||||
env_prefix="APP_CONFIG__"
|
||||
)
|
||||
run: RunSettings = RunSettings()
|
||||
db: DatabaseConfig
|
||||
|
||||
settings = Settings()
|
||||
|
Reference in New Issue
Block a user