feat: database with tortoise orm
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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_url)},
|
||||
apps={
|
||||
"models": tortoise.config.AppConfig(
|
||||
models=["app.models"],
|
||||
default_connection="default",
|
||||
migrations="app.migrations",
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
def init(self) -> typing.Self:
|
||||
self.logger.info("Initializing database")
|
||||
tortoise.run_async(tortoise.Tortoise.init(config=self.config))
|
||||
self.logger.info("Migrating database")
|
||||
tortoise.run_async(tortoise.migrations.api.migrate(config=self.config))
|
||||
self.logger.info("Database ready")
|
||||
return self
|
||||
Reference in New Issue
Block a user