aboutsummaryrefslogtreecommitdiffstats
path: root/scratch/semgrep/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'scratch/semgrep/server.py')
-rw-r--r--scratch/semgrep/server.py12
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))
)