add EdgeDB Migrations
This commit is contained in:
@@ -7,4 +7,3 @@
|
|||||||
__pycache__/
|
__pycache__/
|
||||||
data/
|
data/
|
||||||
.env
|
.env
|
||||||
*.edgeql
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user