Files
BiblioGame/app/controller/__init__.py

60 lines
1.5 KiB
Python

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from app.api.cruds.base import create, read, update, delete
from app.schema.library import Library
from ..db.config.config import get_engine_configuration
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
class LibraryController:
def __init__(self, library_id=None, *, engine_string=None, echo=False, engine=None):
if engine_string is None:
engine_string, echo = get_engine_configuration()
if engine is None:
self._engine = create_engine(engine_string, echo=echo=="true", future=True)
else:
self._engine = engine
self._Session = sessionmaker(bind=self.engine)
self._session = self._Session()
self._library = None
if library_id is not None:
self.read(library_id)
def __del__(self):
self.session.close()
@property
def data(self):
return self._library
@property
def engine(self):
return self._engine
@property
def Session(self):
return self._Session
@property
def session(self):
return self._session
def create(self, library:Library):
self._library = create(self.session, library)
return self
def read(self, _id):
self._library = read(self.session, _id, Library)
return self
def update(self):
self.session.commit()
def delete(self):
delete(self.session, self)
del(self)