diff options
Diffstat (limited to 'scratch/semgrep/server.py')
-rw-r--r-- | scratch/semgrep/server.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/scratch/semgrep/server.py b/scratch/semgrep/server.py index 6f3ebcd..becabbb 100644 --- a/scratch/semgrep/server.py +++ b/scratch/semgrep/server.py @@ -23,6 +23,11 @@ def ensure_list(data): raise ValueError("Data must be a list of strings") +def delete_nodes(nodes): + for node in nodes: + collection.delete(where={"node-id": node}) + + class MyRequestHandler(BaseHTTPRequestHandler): def do_POST(self): content_length = int(self.headers["Content-Length"]) @@ -31,6 +36,7 @@ class MyRequestHandler(BaseHTTPRequestHandler): try: data = json.loads(post_data) response_message = f"Received POST request with data: '{data}'\n" + self.log_message(response_message) except ValueError: response_message = "Invalid JSON data" self.send_response(400) @@ -38,12 +44,14 @@ class MyRequestHandler(BaseHTTPRequestHandler): if query := data.get("query"): self.log_message("Processing query '%s'", query.replace("\n", " ").strip()) response = collection.query(query_texts=ensure_list(query)) + elif delete_set := data.get("delete"): + delete_nodes(ensure_list(delete_set)) + response = f"Deleted nodes {delete_set}" elif paragraphs := data.get("insert"): data, metadata = drop_duplicates(paragraphs) nodes = set(m.get("node-id") for m in metadata) self.log_message("Processing metadata %s", nodes) - for node in nodes: - collection.delete(where={"node-id": node}) + delete_nodes(nodes) collection.add( documents=data, metadatas=metadata, ids=list(map(checksum, data)) ) |