Files
tout-doux/app/database.py
T
klemek 59a6f49700
Python Lint CI / ruff-format-check (push) Successful in 44s
Python Lint CI / ty (push) Successful in 44s
Python Lint CI / ruff (push) Successful in 44s
feat: rate limiting
2026-07-03 15:33:06 +02:00

40 lines
1.2 KiB
Python

import logging
import typing
import tortoise
import tortoise.config
import tortoise.migrations.api
if typing.TYPE_CHECKING:
from app.params import Parameters
class Database:
def __init__(self, params: Parameters) -> None:
self.env = params.env
self.logger = logging.getLogger(self.__class__.__name__)
self.config = tortoise.config.TortoiseConfig(
connections={"default": tortoise.config.DBUrlConfig(params.db_uri)},
apps={
"models": tortoise.config.AppConfig(
models=["app.models"],
default_connection="default",
migrations="app.migrations",
)
},
)
def init(self) -> typing.Self:
self.logger.info("Migrating database")
tortoise.run_async(tortoise.migrations.api.migrate(config=self.config))
self.logger.info("Initializing database")
tortoise.run_async(
tortoise.Tortoise.init(config=self.config, _enable_global_fallback=True)
)
self.logger.info("Database ready")
return self
def __enter__(self) -> typing.Self:
return self