diff --git a/vdb/lib/cve.py b/vdb/lib/cve.py index c5bb063..9fc52f3 100644 --- a/vdb/lib/cve.py +++ b/vdb/lib/cve.py @@ -387,7 +387,7 @@ def store5(self, data: list[CVE]): # Filter obvious duplicates if not source_completed_keys.get(pkg_key): dbc.execute( - "INSERT INTO cve_data values(?, ?, ?, ?, json(?), ?, ?);", ( + "INSERT INTO cve_data values(?, ?, ?, ?, jsonb(?), ?, ?);", ( cve_id, affected.vendor, affected.product, diff --git a/vdb/lib/db6.py b/vdb/lib/db6.py index c0cf24b..6c33319 100644 --- a/vdb/lib/db6.py +++ b/vdb/lib/db6.py @@ -14,7 +14,7 @@ def ensure_schemas(db_conn_obj: apsw.Connection, index_conn_obj: apsw.Connection): """Create the sqlite tables and indexes in case they don't exist""" db_conn_obj.execute( - "CREATE TABLE if not exists cve_data(cve_id TEXT NOT NULL, type TEXT NOT NULL, namespace TEXT, name TEXT NOT NULL, source_data JSON NOT NULL, override_data JSON, source_data_hash TEXT NOT NULL);") + "CREATE TABLE if not exists cve_data(cve_id TEXT NOT NULL, type TEXT NOT NULL, namespace TEXT, name TEXT NOT NULL, source_data BLOB NOT NULL, override_data BLOB, source_data_hash TEXT NOT NULL);") db_conn_obj.pragma("synchronous", "OFF") db_conn_obj.pragma("journal_mode", "MEMORY") index_conn_obj.execute( diff --git a/vdb/lib/search.py b/vdb/lib/search.py index af5b999..bf35103 100644 --- a/vdb/lib/search.py +++ b/vdb/lib/search.py @@ -38,7 +38,7 @@ def get_cve_data(db_conn, index_hits: list[dict, Any], search_str: str) -> list[ data_list = [] for ahit in index_hits: results = exec_query(db_conn, - "SELECT cve_id, type, namespace, name, source_data, override_data FROM cve_data WHERE cve_id = ? AND type = ? ORDER BY cve_id DESC;", + "SELECT cve_id, type, namespace, name, json_object('source', source_data), json_object('override', override_data) FROM cve_data WHERE cve_id = ? AND type = ? ORDER BY cve_id DESC;", (ahit["cve_id"], ahit["type"])) for res in results: data_list.append({ @@ -48,8 +48,8 @@ def get_cve_data(db_conn, index_hits: list[dict, Any], search_str: str) -> list[ "name": res[3], "matching_vers": ahit["vers"], "matched_by": search_str, - "source_data": CVE.model_validate(orjson.loads(res[4]), strict=False) if res[4] else None, - "override_data": orjson.loads(res[5]) if res[5] else None + "source_data": CVE.model_validate(orjson.loads(res[4])["source"], strict=False) if res[4] else None, + "override_data": orjson.loads(res[5])["override"] if res[5] else None }) return data_list