From 10c7f2656cefaeb4a1380f2fcefb060d72011aec Mon Sep 17 00:00:00 2001 From: Daniel Dolezal Date: Sun, 5 May 2024 22:05:10 +0200 Subject: [PATCH] edgedb: move Calculations into own type --- dbschema/default.esdl | 12 +++++++++++- statestorage/EdgeDB.py | 11 +++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/dbschema/default.esdl b/dbschema/default.esdl index 395e85e..26a3fe9 100644 --- a/dbschema/default.esdl +++ b/dbschema/default.esdl @@ -63,8 +63,9 @@ module default { required type: str { readonly := true; } - calculations: array { + required multi calculations: Calculations { readonly := true; + on source delete delete target; } } @@ -80,4 +81,13 @@ module default { } } + type Calculations { + required turn: int32 { + readonly := true; + } + required data: array { + readonly := true; + } + } + } diff --git a/statestorage/EdgeDB.py b/statestorage/EdgeDB.py index bc16c30..a3745fe 100644 --- a/statestorage/EdgeDB.py +++ b/statestorage/EdgeDB.py @@ -55,7 +55,14 @@ class EdgeDB: snake := ( insert Snake { type := $snake_type, - calculations := >$calculations + calculations := ( + with input_data := >> >$calculations + for tupel_data in array_unpack(input_data) + insert Calculations { + turn := tupel_data.turn, + data := tupel_data.data + } + ) } ) }""", @@ -76,7 +83,7 @@ class EdgeDB: settings=json.dumps(game_board.ruleset["settings"]), snake_type=game_board.snake_class.__class__.__name__, - calculations=[ json.dumps(ele) for ele in game_board.snake_class.get_history() ], + calculations=[ tuple([ele["turn"], [json.dumps(calc) for calc in ele["data"]]]) for ele in game_board.snake_class.get_history() ], ) def save(self, game_board:GameBoard):