From c5c2652f3a6da5e217e9f337bb888d2582502489 Mon Sep 17 00:00:00 2001 From: Daniel Dolezal Date: Mon, 28 Apr 2025 13:36:34 +0200 Subject: [PATCH] add cleanup code for storage classes --- server/Server.py | 10 +++++++++- server/storage/EdgeDB.py | 11 +++++++++++ server/storage/LocalStorage.py | 3 +++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/server/Server.py b/server/Server.py index 3c8c8ed..a0d86be 100644 --- a/server/Server.py +++ b/server/Server.py @@ -4,7 +4,7 @@ from server.SnakeBuilder import SnakeBuilder from server.storage.StorageLoader import StorageLoader -from flask import Flask +from flask import Flask, jsonify from flask import request import logging, json, os, re @@ -54,6 +54,10 @@ class Server: "server", "battlesnake/github/starter-snake-python" ) return response + + @self.app.post("/cleanup") + def cleanup(): + self._cleanup() def run(self, host:str="0.0.0.0", port:str="8000", debug:bool=False): logging.getLogger("werkzeug").setLevel(logging.ERROR) @@ -152,3 +156,7 @@ class Server: print("GAME ENDED: Winner is", [ x["name"] for x in game_state["board"]['snakes']]) self._delete_game_board(game_state) + + def _cleanup(self): + storage = StorageLoader.build(self.storage_type) + return jsonify(storage.cleanup()) diff --git a/server/storage/EdgeDB.py b/server/storage/EdgeDB.py index 6ac5ceb..0de1310 100644 --- a/server/storage/EdgeDB.py +++ b/server/storage/EdgeDB.py @@ -109,3 +109,14 @@ class EdgeDB: def __del__(self): self.client.close() + + def cleanup(self): + return self.run_query_with_reconnection( + self.client.query, + """ + delete default::GameBoard { } + filter .turns < "200" or .is_winner_me = "false"; + + delete default::Moves { } + """ + ) diff --git a/server/storage/LocalStorage.py b/server/storage/LocalStorage.py index 3650a0a..0d93eee 100644 --- a/server/storage/LocalStorage.py +++ b/server/storage/LocalStorage.py @@ -54,3 +54,6 @@ class LocalStorage: "calculations": game_board.snake_class.get_history(), }, }, callback=json.dump, indent=2, ensure_ascii=False) + + def cleanup(self): + pass