add EdgeDB Migrations

This commit is contained in:
2024-05-12 12:44:22 +02:00
parent e068fb8614
commit 600cde4a3e
2 changed files with 89 additions and 1 deletions
-1
View File
@@ -7,4 +7,3 @@
__pycache__/ __pycache__/
data/ data/
.env .env
*.edgeql
+89
View File
@@ -0,0 +1,89 @@
CREATE MIGRATION m1ezdfntpqrmuj2yefl7glg5bbtt6zqp3jjsf2i7jhroz6gm7j5s5q
ONTO initial
{
CREATE FUNCTION default::gameboard_url(id: std::uuid) -> std::str USING (('https://play.battlesnake.com/game/' ++ <std::str>id));
CREATE FUNCTION default::is_winner_me(winner: std::str) -> std::bool USING ((winner = 'me'));
CREATE TYPE default::GameType {
CREATE REQUIRED PROPERTY is_ladder: std::bool {
SET readonly := true;
};
CREATE REQUIRED PROPERTY name: std::str {
SET readonly := true;
};
CREATE CONSTRAINT std::exclusive ON ((.name, .is_ladder));
};
CREATE TYPE default::Moves {
CREATE PROPERTY calculations: array<std::json> {
SET readonly := true;
};
CREATE REQUIRED PROPERTY game_board: std::json {
SET readonly := true;
};
CREATE REQUIRED PROPERTY snake_move: std::str {
SET readonly := true;
};
CREATE REQUIRED PROPERTY turn: std::int32 {
SET readonly := true;
};
};
CREATE TYPE default::Ruleset {
CREATE REQUIRED PROPERTY name: std::str {
SET readonly := true;
};
CREATE REQUIRED PROPERTY settings: std::json {
SET readonly := true;
};
CREATE REQUIRED PROPERTY version: std::str {
SET readonly := true;
};
CREATE CONSTRAINT std::exclusive ON ((.name, .version, .settings));
};
CREATE TYPE default::Snake {
CREATE REQUIRED PROPERTY type: std::str {
SET readonly := true;
};
CREATE CONSTRAINT std::exclusive ON (.type);
};
CREATE TYPE default::GameBoard {
ALTER PROPERTY id {
SET OWNED;
SET readonly := true;
SET REQUIRED;
SET TYPE std::uuid;
ALTER CONSTRAINT std::exclusive {
SET OWNED;
};
};
CREATE PROPERTY url := (default::gameboard_url(.id));
CREATE REQUIRED PROPERTY winner: std::str {
SET readonly := true;
};
CREATE PROPERTY is_winner_me := (default::is_winner_me(.winner));
CREATE REQUIRED MULTI LINK moves: default::Moves {
ON SOURCE DELETE DELETE TARGET;
SET readonly := true;
};
CREATE REQUIRED SINGLE LINK ruleset: default::Ruleset {
ON SOURCE DELETE DELETE TARGET IF ORPHAN;
SET readonly := true;
};
CREATE REQUIRED SINGLE LINK snake: default::Snake {
ON SOURCE DELETE DELETE TARGET IF ORPHAN;
SET readonly := true;
};
CREATE REQUIRED SINGLE LINK type: default::GameType {
ON SOURCE DELETE DELETE TARGET IF ORPHAN;
SET readonly := true;
};
CREATE REQUIRED PROPERTY created_at: std::datetime {
SET readonly := true;
};
CREATE REQUIRED PROPERTY map: std::str {
SET default := 'standard';
SET readonly := true;
};
CREATE REQUIRED PROPERTY turns: std::int32 {
SET readonly := true;
};
};
};