Atomically replace all data for a file.
(
self, file_path: str, nodes: list[NodeInfo], edges: list[EdgeInfo], fhash: str = ""
)
| 270 | self._conn.execute("BEGIN IMMEDIATE") |
| 271 | |
| 272 | def store_file_nodes_edges( |
| 273 | self, file_path: str, nodes: list[NodeInfo], edges: list[EdgeInfo], fhash: str = "" |
| 274 | ) -> None: |
| 275 | """Atomically replace all data for a file.""" |
| 276 | self._begin_immediate() |
| 277 | try: |
| 278 | self.remove_file_data(file_path) |
| 279 | for node in nodes: |
| 280 | self.upsert_node(node, file_hash=fhash) |
| 281 | for edge in edges: |
| 282 | self.upsert_edge(edge) |
| 283 | self._conn.commit() |
| 284 | except BaseException: |
| 285 | self._conn.rollback() |
| 286 | raise |
| 287 | self._invalidate_cache() |
| 288 | |
| 289 | def store_file_batch( |
| 290 | self, batch: list[tuple[str, list[NodeInfo], list[EdgeInfo], str]] |