Большие изменения с добавленем Alembic

This commit is contained in:
2024-07-31 22:56:31 +09:00
parent a2a400fff3
commit 7c70f82a21
19 changed files with 528 additions and 39 deletions

View File

@ -0,0 +1,4 @@
__all__ = (
"settings"
)
from .settings import settings

View 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

View File

@ -0,0 +1,5 @@
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass

View 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,
)

View File

@ -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()