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)