about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMunyoki Kilyungi2024-06-10 23:23:10 +0300
committerBonfaceKilz2024-06-12 19:21:50 +0300
commita62798d0f59e953dbeba69f370f8d8045bd4becf (patch)
treecb7d5d9def8d8f9f9634d50ba23c36c86ad13576
parent4d82124fcd243ae0b8da8ca4706e73e407a67c02 (diff)
downloadgenenetwork3-a62798d0f59e953dbeba69f370f8d8045bd4becf.tar.gz
Add method to check the validity of the tables+RDF checksums.
* scripts/index-genenetwork (verify_checksums): New function.

Signed-off-by: Munyoki Kilyungi <me@bonfacemunyoki.com>
-rwxr-xr-xscripts/index-genenetwork14
1 files changed, 14 insertions, 0 deletions
diff --git a/scripts/index-genenetwork b/scripts/index-genenetwork
index 52a48df..f291f6b 100755
--- a/scripts/index-genenetwork
+++ b/scripts/index-genenetwork
@@ -448,6 +448,20 @@ def xapian_compact(combined_index: pathlib.Path, indices: List[pathlib.Path]) ->
         db.close()
 
 
+def verify_checksums(xapian_directory: str,
+                     sql_uri: str) -> bool:
+    dir_ = pathlib.Path(xapian_directory)
+    with locked_xapian_writable_database(dir_) as db, database_connection(sql_uri) as conn:
+        checksums = " ".join([
+            result["Checksum"].bind(str)
+            for result in query_sql(
+                    conn,
+                    f"CHECKSUM TABLE {', '.join(db.get_metadata('tables').decode().split())}")
+        ])
+        return (db.get_metadata("generif-checksum").decode() == hash_generif_graph() and
+                db.get_metadata("checksums").decode() == checksums)
+
+
 @click.command(help="Index GeneNetwork data and build Xapian search index in XAPIAN_DIRECTORY.")
 @click.argument("xapian_directory")
 @click.argument("sql_uri")