48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
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)]
|