Skip to content
Snippets Groups Projects
Commit dcbef712 authored by Daniel Lyons's avatar Daniel Lyons
Browse files

Make it possible to reach the bottommost writer

parent df0051f4
No related branches found
No related tags found
2 merge requests!1452Merge 2.8.2 to main,!1353Make it possible to reach the bottommost writer
Pipeline #9889 passed
......@@ -132,7 +132,7 @@ class CoreSampler:
requested = projects.fetch({"science_product_locator": science_product_locator})
self.save(requested)
self.writer.close()
return self.writer
return self.writer.bottom()
def sample_project(self, project_code: str) -> RowWriter:
"""
......@@ -147,7 +147,7 @@ class CoreSampler:
requested = projects.fetch({"project_code": project_code})
self.save(requested)
self.writer.close()
return self.writer
return self.writer.bottom()
def sample_eb(self, sdm_name: str) -> RowWriter:
"""
......@@ -163,7 +163,7 @@ class CoreSampler:
requested = ebs.fetch({"execution_block_id": eb_id})
self.save(requested)
self.writer.close()
return self.writer
return self.writer.bottom()
def save(self, rows: RowSet):
"""
......
......@@ -74,6 +74,9 @@ class Table(ABC):
class RowWriter:
def bottom(self) -> "RowWriter":
return self
def write_rows(self, table: Table, rows: List[Dict]):
raise NotImplementedError
......
......@@ -78,6 +78,9 @@ class UniquifyingRowWriter(RowWriter):
self.underlying = underlying
self.seen = {}
def bottom(self) -> "RowWriter":
return self.underlying.bottom()
def write_rows(self, table: "Table", rows: List[Dict]):
seen = self.seen.setdefault(table.name, [])
new_rows = [row for row in rows if row not in seen]
......@@ -114,6 +117,9 @@ class TopologicallySortingRowWriter(RowWriter):
self.tables_rows: Dict["Table", List[Dict]] = {}
self.underlying = underlying
def bottom(self) -> "RowWriter":
return self.underlying.bottom()
def write_rows(self, table: "Table", rows: List[Dict]):
# We've been asked to output some rows for this table.
# What we must now do is keep track of this table and the in-bound relationships with it.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment