only store one object of GameType and Ruleset when they already exists in the database

This commit is contained in:
2024-05-08 16:11:44 +02:00
parent aba457423e
commit a09c05b6ec
2 changed files with 4 additions and 8 deletions
+2 -6
View File
@@ -19,13 +19,9 @@ module default {
} }
required single type: GameType { required single type: GameType {
readonly := true; readonly := true;
constraint exclusive;
on source delete delete target;
} }
required single ruleset: Ruleset { required single ruleset: Ruleset {
readonly := true; readonly := true;
constraint exclusive;
on source delete delete target;
} }
required winner: str { required winner: str {
readonly := true; readonly := true;
@@ -46,7 +42,7 @@ module default {
required is_ladder: bool { required is_ladder: bool {
readonly := true; readonly := true;
} }
#constraint exclusive on ( (.name, .is_ladder) ); constraint exclusive on ( (.name, .is_ladder) );
} }
type Ruleset { type Ruleset {
@@ -59,7 +55,7 @@ module default {
required settings: json { required settings: json {
readonly := true; readonly := true;
} }
#constraint exclusive on ( (.name, .version, .settings) ); constraint exclusive on ( (.name, .version, .settings) );
} }
type Snake { type Snake {
+2 -2
View File
@@ -54,14 +54,14 @@ class EdgeDB:
insert GameType { insert GameType {
name := <str>$game_type, name := <str>$game_type,
is_ladder := <bool>$is_ladder is_ladder := <bool>$is_ladder
} } unless conflict on (.name, .is_ladder) else GameType
), ),
ruleset := ( ruleset := (
insert Ruleset { insert Ruleset {
name := <str>$ruleset, name := <str>$ruleset,
version := <str>$version, version := <str>$version,
settings := to_json(<str>$settings) settings := to_json(<str>$settings)
} } unless conflict on (.name, .version, .settings) else Ruleset
), ),
snake := ( snake := (
insert Snake { insert Snake {