# import inspect import os # from config import Config from sqlalchemy import create_engine # from contextlib import contextmanager # from log import DEBUG # from sqlalchemy.orm import (sessionmaker, scoped_session) # # # class Counter: # def __init__(self): # self.count = 0 # # def __repr__(self): # return(f"") # # def inc(self): # self.count += 1 # return self.count # # def dec(self): # self.count -= 1 # return self.count # # MYSQL_CONNECT = os.environ.get('MM_DB') if MYSQL_CONNECT is None: raise ValueError("MYSQL_CONNECT is undefined") # MM_ENV = os.environ.get('MM_ENV', 'PRODUCTION') # testing = False # # if MM_ENV == 'PRODUCTION': # dbname = os.environ.get('MM_PRODUCTION_DBNAME', 'musicmuster_prod') # dbuser = os.environ.get('MM_PRODUCTION_DBUSER', 'musicmuster') # dbpw = os.environ.get('MM_PRODUCTION_DBPW', 'musicmuster') # dbhost = os.environ.get('MM_PRODUCTION_DBHOST', 'localhost') # elif MM_ENV == 'TESTING': # dbname = os.environ.get('MM_TESTING_DBNAME', 'musicmuster_testing') # dbuser = os.environ.get('MM_TESTING_DBUSER', 'musicmuster_testing') # dbpw = os.environ.get('MM_TESTING_DBPW', 'musicmuster_testing') # dbhost = os.environ.get('MM_TESTING_DBHOST', 'localhost') # testing = True # elif MM_ENV == 'DEVELOPMENT': # dbname = os.environ.get('MM_DEVELOPMENT_DBNAME', 'musicmuster_dev') # dbuser = os.environ.get('MM_DEVELOPMENT_DBUSER', 'musicmuster') # dbpw = os.environ.get('MM_DEVELOPMENT_DBPW', 'musicmuster') # dbhost = os.environ.get('MM_DEVELOPMENT_DBHOST', 'localhost') # else: # raise ValueError(f"Unknown MusicMuster environment: {MM_ENV=}") # # DEBUG(f"Using {dbname} database") # MYSQL_CONNECT = f"mysql+mysqldb://{dbuser}:{dbpw}@{dbhost}/{dbname}" # engine = create_engine( MYSQL_CONNECT, encoding='utf-8', echo=Config.DISPLAY_SQL, pool_pre_ping=True, future=True ) # # # # # @contextmanager # # def Session(): # # frame = inspect.stack()[2] # # file = frame.filename # # function = frame.function # # lineno = frame.lineno # # Session = scoped_session(sessionmaker(bind=engine, future=True)) # # DEBUG(f"Session acquired, {file=}, {function=}, {lineno=}, {Session=}") # # yield Session # # DEBUG(" Session released") # # Session.commit() # # Session.close()