Skip to content
Snippets Groups Projects
Commit 8393a6f9 authored by Charlotte Hausman's avatar Charlotte Hausman
Browse files

Merge branch 'add-bottom-writer' into '2.8.2-DEVELOPMENT'

Make it possible to reach the bottommost writer

See merge request !1353
parents d1adf082 dcbef712
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 #9890 passed
......@@ -134,7 +134,7 @@ class CoreSampler:
requested = projects.fetch({"science_product_locator": product_locator})
self.save(requested)
self.writer.close()
return self.writer
return self.writer.bottom()
def sample_project(self, project_code: str) -> RowWriter:
"""
......@@ -149,7 +149,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:
"""
......@@ -165,7 +165,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