seeding expansion

also: replace energy output with energy output density
This commit is contained in:
2026-03-04 13:21:20 -06:00
parent aa6eb72a74
commit e99a14d087
16 changed files with 1078 additions and 117 deletions

View File

@@ -153,6 +153,35 @@ class Repository:
self.conn.commit()
return dep
def replace_entity_dependencies(self, entity_id: int, deps: list[Dependency]) -> None:
"""Delete all existing dependencies for an entity and insert new ones."""
self.conn.execute("DELETE FROM dependencies WHERE entity_id = ?", (entity_id,))
for dep in deps:
cur = self.conn.execute(
"""INSERT INTO dependencies
(entity_id, category, key, value, unit, constraint_type)
VALUES (?, ?, ?, ?, ?, ?)""",
(entity_id, dep.category, dep.key, dep.value, dep.unit, dep.constraint_type),
)
dep.id = cur.lastrowid
self.conn.commit()
def get_entity_by_name(self, dimension: str, name: str) -> Entity | None:
row = self.conn.execute(
"""SELECT e.id, e.name, e.description, d.name as dimension, e.dimension_id
FROM entities e JOIN dimensions d ON e.dimension_id = d.id
WHERE d.name = ? AND e.name = ?""",
(dimension, name),
).fetchone()
if not row:
return None
deps = self._load_dependencies(row["id"])
return Entity(
id=row["id"], name=row["name"], description=row["description"] or "",
dimension=row["dimension"], dimension_id=row["dimension_id"],
dependencies=deps,
)
def update_dependency(self, dep_id: int, dep: Dependency) -> None:
self.conn.execute(
"""UPDATE dependencies
@@ -772,3 +801,20 @@ class Repository:
(combo_id, domain_id),
).fetchone()
return dict(row) if row else None
# ── Admin ────────────────────────────────────────────────────
def clear_all(self) -> None:
"""Delete all data from every table in FK-safe order."""
self.conn.execute("DELETE FROM pipeline_runs")
self.conn.execute("DELETE FROM combination_results")
self.conn.execute("DELETE FROM combination_scores")
self.conn.execute("DELETE FROM combination_entities")
self.conn.execute("DELETE FROM combinations")
self.conn.execute("DELETE FROM dependencies")
self.conn.execute("DELETE FROM entities")
self.conn.execute("DELETE FROM domain_metric_weights")
self.conn.execute("DELETE FROM domains")
self.conn.execute("DELETE FROM metrics")
self.conn.execute("DELETE FROM dimensions")
self.conn.commit()