parent
6feae101b0
commit
fd899f5549
@ -0,0 +1,47 @@
|
|||||||
|
"""
|
||||||
|
This class is a wrapper around read/write classes of cloud,sql,nosql,other packages
|
||||||
|
The wrapper allows for application of plugins as pre-post conditions
|
||||||
|
"""
|
||||||
|
class IO:
|
||||||
|
"""
|
||||||
|
Base wrapper class for read/write
|
||||||
|
"""
|
||||||
|
def __init__(self,_agent,loader):
|
||||||
|
self._agent = _agent
|
||||||
|
self._loader = loader
|
||||||
|
def meta (self,**_args):
|
||||||
|
if hasattr(self._agent,'meta') :
|
||||||
|
return self._agent.meta(**_args)
|
||||||
|
return []
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
if hasattr(self._agent,'close') :
|
||||||
|
self._agent.close()
|
||||||
|
def apply(self):
|
||||||
|
"""
|
||||||
|
applying pre/post conditions given a pipeline expression
|
||||||
|
"""
|
||||||
|
for _pointer in self._loader :
|
||||||
|
_data = _pointer(_data)
|
||||||
|
def apply(self,_query):
|
||||||
|
if hasattr(self._agent,'apply') :
|
||||||
|
return self._agent.apply(_query)
|
||||||
|
return None
|
||||||
|
class IReader(IO):
|
||||||
|
def __init__(self,_agent,pipeline=None):
|
||||||
|
super().__init__(_agent,pipeline)
|
||||||
|
def read(self,**_args):
|
||||||
|
_data = self._agent.read(**_args)
|
||||||
|
if self._loader and self._loader.ratio() > 0 :
|
||||||
|
_data = self._loader.apply(_data)
|
||||||
|
#
|
||||||
|
# output data
|
||||||
|
return _data
|
||||||
|
class IWriter(IO):
|
||||||
|
def __init__(self,_agent,pipeline=None):
|
||||||
|
super().__init__(_agent,pipeline)
|
||||||
|
def write(self,_data,**_args):
|
||||||
|
if self._loader and self._loader.ratio() > 0 :
|
||||||
|
_data = self._loader.apply(_data)
|
||||||
|
|
||||||
|
self._agent.write(_data,**_args)
|
Loading…
Reference in new issue