diff --git a/src/blackboard/models.py b/src/blackboard/models.py index b155206..22124d7 100644 --- a/src/blackboard/models.py +++ b/src/blackboard/models.py @@ -145,7 +145,8 @@ class Review: @classmethod def from_row(cls, row: Any) -> Review: - d = {k: row[k] for k in row.keys()} + valid_keys = {f.name for f in cls.__dataclass_fields__.values()} + d = {k: row[k] for k in row.keys() if k in valid_keys} # SQLite stores boolean as 0/1 if "consensus_reached" in d: d["consensus_reached"] = bool(d["consensus_reached"]) @@ -172,6 +173,7 @@ class Experience: @classmethod def from_row(cls, row: Any) -> Experience: - d = {k: row[k] for k in row.keys()} + valid_keys = {f.name for f in cls.__dataclass_fields__.values()} + d = {k: row[k] for k in row.keys() if k in valid_keys} d.pop("tags", None) # tags queried separately return cls(**d)