jw-python/tools/python/jwutils/db/DataBase.py

42 lines
905 B
Python
Raw Normal View History

# -*- 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)