Newer
Older
from typing import Any, Callable, Dict
from ...engines._DatabaseEngine import _DatabaseEngine
from .EntityAttributes import EntityAttributes

Lluis Gifre Renom
committed
class _Entity:
def __init__(self, parent, entity_uuid : str, attributes_key : str,
attribute_validators : Dict[str, Callable[[Any], bool]],
attribute_transcoders : Dict[str, Dict[Any, Callable[[Any], Any]]]):
if not isinstance(parent, _Entity):

Lluis Gifre Renom
committed
raise AttributeError('parent must be an instance of _Entity')
if (not isinstance(entity_uuid, str)) or (len(entity_uuid) == 0):
raise AttributeError('entity_uuid must be a non-empty instance of str')
if (not isinstance(attributes_key, str)) or (len(attributes_key) == 0):
raise AttributeError('attributes_key must be a non-empty instance of str')
if not isinstance(attribute_validators, dict):
raise AttributeError('attribute_validators must be an instance of dict')
if not isinstance(attribute_transcoders, dict):
raise AttributeError('attribute_transcoders must be an instance of dict')

Lluis Gifre Renom
committed
self._parent = parent
self._attributes = EntityAttributes(self, attributes_key, attribute_validators,
transcoders=attribute_transcoders)

Lluis Gifre Renom
committed
@property
def parent(self) -> '_Entity': return self._parent
@property
def database_engine(self) -> _DatabaseEngine: return self._parent.database_engine
@property
def attributes(self) -> EntityAttributes: return self._attributes

Lluis Gifre Renom
committed
def load(self):
raise NotImplementedError()
def create(self):
raise NotImplementedError()
def delete(self):
raise NotImplementedError()
def dump_id(self) -> Dict:
raise NotImplementedError()

Lluis Gifre Renom
committed
def dump(self) -> Dict:
raise NotImplementedError()