# -*- coding: utf-8 -*- from typing import Any import abc from contextlib import contextmanager from jwutils.Config import Config from jwutils.db.schema.Schema import Schema from jwutils import Cmds from .Session import Session from ..log import * class DataBase(abc.ABC): def __init__(self, schema: Schema, conf: Config) -> None: self.__conf = conf self.__schema = schema conf.dump(NOTICE, "Initializing database with configuration") @abc.abstractmethod def _create_session(self): pass def _delete_session(self, session: Session): del session @property def schema(self): return self.__schema @property def conf(self): return self.__conf @contextmanager def session(self): ret = self._create_session() try: yield ret finally: self._delete_session(ret)