From 1a289eca7d770487d3f87c612a3c76e7fd247f6e Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Tue, 17 Sep 2024 19:31:59 +0300 Subject: Get the next versionId from SQL. * gn3/api/metadata_api/wiki.py (edit_wiki): Get the next version Id from SQL * gn3/db/rdf/wiki.py (get_next_comment_version): Delete. (update_wiki_comment): Provide the next_version id as an extra arg. Signed-off-by: Munyoki Kilyungi --- gn3/api/metadata_api/wiki.py | 3 ++- gn3/db/rdf/wiki.py | 33 +++++---------------------------- 2 files changed, 7 insertions(+), 29 deletions(-) diff --git a/gn3/api/metadata_api/wiki.py b/gn3/api/metadata_api/wiki.py index 7595993..bb7d2d2 100644 --- a/gn3/api/metadata_api/wiki.py +++ b/gn3/api/metadata_api/wiki.py @@ -48,6 +48,7 @@ def edit_wiki(comment_id: int): """ with db_utils.database_connection(current_app.config["SQL_URI"]) as conn: cursor = conn.cursor() + next_version = 0 try: category_ids = wiki.get_categories_ids( cursor, payload["categories"]) @@ -76,8 +77,8 @@ def edit_wiki(comment_id: int): update_wiki_comment( comment_id=comment_id, payload=payload, + next_version=next_version, sparql_conf={ - "sparql_uri": current_app.config["SPARQL_ENDPOINT"], "sparql_user": current_app.config["SPARQL_USER"], "sparql_password": current_app.config["SPARQL_PASSWORD"], "sparql_auth_uri": current_app.config["SPARQL_AUTH_URI"], diff --git a/gn3/db/rdf/wiki.py b/gn3/db/rdf/wiki.py index 152b261..55f4162 100644 --- a/gn3/db/rdf/wiki.py +++ b/gn3/db/rdf/wiki.py @@ -189,33 +189,12 @@ CONSTRUCT { return results -def get_next_comment_version( - comment_id: int, sparql_uri: str, graph: str = "" -) -> int: - "Find the next version to add" - query = Template( - """ -$prefix - -SELECT MAX(?version) as ?max_version FROM $graph WHERE { - ?comment rdf:type gnc:GNWikiEntry ; - dct:identifier "$comment_id"^^xsd:integer ; - dct:hasVersion ?version . -} -""" - ).substitute(prefix=RDF_PREFIXES, graph=graph, comment_id=comment_id) - results = sparql_query( - query=query, endpoint=sparql_uri, format_type="json")[0] - if not results: - raise MissingDBDataException - return int(results["max_version"]["value"]) + 1 - - def update_wiki_comment( - comment_id: int, - payload: dict, - sparql_conf: dict, - graph: str = "", + comment_id: int, + payload: dict, + next_version: int, + sparql_conf: dict, + graph: str = "", ) -> tuple[str, int]: """Update a wiki comment by inserting a comment with the same identifier but an updated version id. The End form of this query @@ -244,8 +223,6 @@ looks like: } } """ - next_version = get_next_comment_version( - comment_id, sparql_conf['sparql_uri'], graph) name = f"gn:wiki-{comment_id}-{next_version}" comment_triple = Template("""$name rdf:label '''$comment'''@en ; rdf:type gnc:GNWikiEntry ; -- cgit v1.2.3