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) -> None: self.logger.info("Migrating database") tortoise.run_async(tortoise.migrations.api.migrate(config=self.config)) self.logger.info("Database migrated") self.logger.info("Initializing database") tortoise.run_async( tortoise.Tortoise.init(config=self.config, _enable_global_fallback=True) ) self.logger.info("Database ready")