import logging.config from pathlib import Path from typing import Annotated import yaml from fastapi import Depends from platformdirs import PlatformDirs from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, Session from .admin import User, Token, Role, AuthorizationMatrix, ModuleData, MailAccount, Mail from .bookshelf import Article, Book, Author, BookshelfPublisher, ArticleAuthor, BookAuthor from .comic import Comic, Artist, Publisher, Issue, StoryArc, TradePaperback, Volume, ComicWork, WorkType from .metadata import MetaDataTable, MetaDataColumn from .tysc import Card, CardSet, Sport, Team, FieldPosition, Rooster, Player, Vendor from .media import MediaFile, MediaArticle, MediaVideo from .base import Base from .database import KontorDB, ColumnEntry dirs = PlatformDirs('kontor-docker') logging_config = Path(dirs.user_config_dir, 'logging-config.yaml') with open(logging_config, 'rt') as f: configDict = yaml.safe_load(f.read()) logging.config.dictConfig(configDict) logger = logging.getLogger('development') logger.setLevel(logging.DEBUG) database_config = Path(dirs.user_config_dir, 'database-config.yaml') with open(database_config, 'rt') as f: db_config = yaml.safe_load(f.read()) print(db_config) connect_string = ('mariadb+mariadbconnector://{}:{}@{}:{}/{}'.format( db_config['mariadb']['user'], db_config['mariadb']['password'], db_config['mariadb']['host'], db_config['mariadb']['port'], db_config['mariadb']['database'] )) engine = create_engine(connect_string) SessionLocal = sessionmaker(bind=engine) Base.metadata.create_all(bind=engine, checkfirst=True) def get_db(): logger.info("get_db") with SessionLocal() as db: yield db SessionDep = Annotated[Session, Depends(get_db)]