Files
snake-python/dbschema/default.esdl
T

98 lines
1.9 KiB
Plaintext

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;
constraint exclusive;
on source delete delete target;
}
required single ruleset: Ruleset {
readonly := true;
constraint exclusive;
on source delete delete target;
}
required winner: str {
readonly := true;
}
required multi moves: Moves {
readonly := true;
on source delete delete target;
}
single snake: Snake {
readonly := true;
on source delete delete target;
on target delete allow;
}
}
type GameType {
required name: str {
readonly := true;
}
required is_ladder: bool {
readonly := true;
}
#constraint exclusive on ( (.name, .is_ladder) );
}
type Ruleset {
required name: str {
readonly := true;
}
required version: str {
readonly := true;
}
required settings: json {
readonly := true;
}
#constraint exclusive on ( (.name, .version, .settings) );
}
type Snake {
required type: str {
readonly := true;
}
#constraint exclusive on .type;
}
type Moves {
required turn: int32 {
readonly := true;
}
required snake_move: str {
readonly := true;
}
required game_board: json {
readonly := true;
}
single calculations: Calculations {
readonly := true;
on source delete delete target;
on target delete allow;
}
}
type Calculations {
required data: array<json> {
readonly := true;
}
}
}