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; } } }