79 lines
2.1 KiB
Python
79 lines
2.1 KiB
Python
import abc
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from plesna.models.flux import FluxMetaData
|
|
|
|
|
|
class ModificationLog(BaseModel):
|
|
datetime: datetime
|
|
flux_id: str
|
|
|
|
|
|
class ExecutionLog(BaseModel):
|
|
datetime: datetime
|
|
output: FluxMetaData
|
|
|
|
def to_flat_dict(self):
|
|
return {"datetime": self.datetime.isoformat(), "output": self.output.model_dump_json()}
|
|
|
|
|
|
class MetaDataRepository:
|
|
"""Object that stores metadata about flux, schema, tables"""
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def fluxes(self) -> list[str]:
|
|
"""List fluxes's ids"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def add_flux(self, flux_id: str) -> str:
|
|
"""Get the flux metadata"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def register_flux_execution(self, flux_id: str, dt: datetime, metadata: dict) -> str:
|
|
"""Get the flux metadata"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def flux(self, schema_id: str) -> ExecutionLog:
|
|
"""Get the flux last execution metadata"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def flux_logs(self, schema_id: str) -> list[ExecutionLog]:
|
|
"""Get all the flux execution metadata"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def tables(
|
|
self,
|
|
) -> list[str]:
|
|
"""List all table's ids"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def add_table(self, table_id: str) -> str:
|
|
"""Get the table metadata"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def register_table_modification(self, table_id: str, dt: datetime, metadata: dict) -> str:
|
|
"""Get the table metadata"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def table(self, table_id: str) -> ModificationLog:
|
|
"""Get the last table's modification metadatas"""
|
|
raise NotImplementedError
|
|
|
|
@abc.abstractmethod
|
|
def table_logs(self, table_id: str) -> list[ModificationLog]:
|
|
"""Get all table's modification metadatas"""
|
|
raise NotImplementedError
|