diyalgo/diyalgo/db.py

31 lines
786 B
Python

"""
Initialization routines for the database
"""
from typing import Optional, TYPE_CHECKING
# This should also import all the public models
# so the engine is ready for them
# https://sqlmodel.tiangolo.com/tutorial/create-db-and-table/
from diyalgo import models, Config
from sqlmodel import SQLModel, create_engine
if TYPE_CHECKING:
from sqlalchemy.future.engine import Engine
def init_db_engine(config:Optional[Config] = None) -> 'Engine':
if config is None:
config = Config()
engine = create_engine(config.sqlite_path)
return engine
def create_tables(
engine: Optional['Engine'] = None,
config:Optional[Config] = None
):
if engine is None:
engine = init_db_engine(config=config)
SQLModel.metadata.create_all(engine)