# Read results into the database Result extraction and persistence are explicit capabilities in separate modules. A frozen record makes the relationship searchable: ```python from dataclasses import dataclass from httk.data.db import Database, SqlStore from httk.workflow.vasp import last_oszicar_energy @dataclass(frozen=True) class TotalEnergyResult: structure_id: str total_energy: float energy = last_oszicar_energy("Runs/CaTiO3/OSZICAR") if energy is None: raise ValueError("OSZICAR contains no completed ionic-step energy") store = SqlStore(Database.sqlite("presentation.sqlite")) store.save(TotalEnergyResult("CaTiO3", energy)) ``` `last_oszicar_energy` is a small file extractor. A workflow can also publish OUTCAR, OSZICAR, and other artifacts transactionally before this ingestion step.