diff --git a/.gitignore b/.gitignore index ffc7316..313f030 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ __pycache__/ data/ .env +*.edgeql diff --git a/dbschema/default.esdl b/dbschema/default.esdl new file mode 100644 index 0000000..760ea8e --- /dev/null +++ b/dbschema/default.esdl @@ -0,0 +1,82 @@ +module default { + + type GameBoard { + overloaded required id: uuid { + readonly := true; + constraint exclusive; + } + url: str { + readonly := true; + } + required created_at: datetime { + readonly := true; + } + required turns: int32 { + readonly := true; + } + required map: str { + readonly := true; + } + required single type: GameType { + readonly := true; + on source delete delete target; + } + required single ruleset: Ruleset { + readonly := true; + on source delete delete target; + } + required winner: str { + readonly := true; + } + required multi moves: Moves { + readonly := true; + } + required single snake: Snake { + readonly := true; + on source delete delete target; + } + } + + type GameType { + required name: str { + readonly := true; + } + required is_ladder: bool { + readonly := true; + } + } + + type Ruleset { + required name: str { + readonly := true; + } + required version: str { + readonly := true; + } + required settings: json { + readonly := true; + } + } + + type Snake { + required type: str { + readonly := true; + } + calculations: array { + readonly := true; + } + } + + type Moves { + required turn: int32 { + readonly := true; + } + required snake_move: str { + readonly := true; + } + required game_board: json { + readonly := true; + } + } + +} diff --git a/edgedb.toml b/edgedb.toml new file mode 100644 index 0000000..794be44 --- /dev/null +++ b/edgedb.toml @@ -0,0 +1,2 @@ +[edgedb] +server-version = "5.3" diff --git a/requirements.txt b/requirements.txt index 1abc23f..1428d24 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ blinker==1.7.0 click==8.1.7 +edgedb==1.9.0 Flask==3.0.3 itsdangerous==2.2.0 Jinja2==3.1.3 diff --git a/server/GameBoard.py b/server/GameBoard.py index 727b5c9..1ede46e 100644 --- a/server/GameBoard.py +++ b/server/GameBoard.py @@ -138,3 +138,4 @@ class GameBoard: def save(self, store_class, **kwargs): store = store_class(**kwargs) store.save(self) + del store