From da0347731cbeeba8c93724bed0255384142540e4 Mon Sep 17 00:00:00 2001 From: Daniel Dolezal Date: Wed, 8 May 2024 19:04:58 +0200 Subject: [PATCH] make deletion easyer when linked with other objects and make gameboard url into a function --- dbschema/default.esdl | 16 +++++++++++++--- server/storage/EdgeDB.py | 2 -- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dbschema/default.esdl b/dbschema/default.esdl index 70c92e2..aafe58e 100644 --- a/dbschema/default.esdl +++ b/dbschema/default.esdl @@ -1,13 +1,17 @@ module default { + function is_winner_me(winner: str) -> bool + using (winner = "me"); + + function gameboard_url(id: uuid) -> str + using ("https://play.battlesnake.com/game/" ++ id); type GameBoard { overloaded required id: uuid { readonly := true; constraint exclusive; } - url: str { - readonly := true; - } + url := gameboard_url(.id); + required created_at: datetime { readonly := true; } @@ -16,12 +20,15 @@ module default { } required map: str { readonly := true; + default := "standard"; } required single type: GameType { readonly := true; + on source delete delete target if orphan; } required single ruleset: Ruleset { readonly := true; + on source delete delete target if orphan; } required winner: str { readonly := true; @@ -32,7 +39,10 @@ module default { } required single snake: Snake { readonly := true; + on source delete delete target if orphan; } + + is_winner_me := is_winner_me(.winner) } type GameType { diff --git a/server/storage/EdgeDB.py b/server/storage/EdgeDB.py index 5d23fd7..28744fa 100644 --- a/server/storage/EdgeDB.py +++ b/server/storage/EdgeDB.py @@ -35,7 +35,6 @@ class EdgeDB: self.client.query(""" insert GameBoard { id := $id, - url := $url, created_at := $created_at, turns := $turns, map := $map, @@ -71,7 +70,6 @@ class EdgeDB: }""", id=game_board.id, - url=game_board.url if game_board.url else "", created_at=datetime.fromtimestamp(game_board.now_date.timestamp(), game_board.now_date.astimezone().tzinfo), turns=game_board.turn, map=game_board.map if game_board.map else "standard",