From a09c05b6ecb3dbe42230b5539b46eef265894f17 Mon Sep 17 00:00:00 2001 From: Daniel Dolezal Date: Wed, 8 May 2024 16:11:44 +0200 Subject: [PATCH] only store one object of GameType and Ruleset when they already exists in the database --- dbschema/default.esdl | 8 ++------ server/storage/EdgeDB.py | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/dbschema/default.esdl b/dbschema/default.esdl index a18eec7..70c92e2 100644 --- a/dbschema/default.esdl +++ b/dbschema/default.esdl @@ -19,13 +19,9 @@ module default { } 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; @@ -46,7 +42,7 @@ module default { required is_ladder: bool { readonly := true; } - #constraint exclusive on ( (.name, .is_ladder) ); + constraint exclusive on ( (.name, .is_ladder) ); } type Ruleset { @@ -59,7 +55,7 @@ module default { required settings: json { readonly := true; } - #constraint exclusive on ( (.name, .version, .settings) ); + constraint exclusive on ( (.name, .version, .settings) ); } type Snake { diff --git a/server/storage/EdgeDB.py b/server/storage/EdgeDB.py index a491bb6..5d23fd7 100644 --- a/server/storage/EdgeDB.py +++ b/server/storage/EdgeDB.py @@ -54,14 +54,14 @@ class EdgeDB: insert GameType { name := $game_type, is_ladder := $is_ladder - } + } unless conflict on (.name, .is_ladder) else GameType ), ruleset := ( insert Ruleset { name := $ruleset, version := $version, settings := to_json($settings) - } + } unless conflict on (.name, .version, .settings) else Ruleset ), snake := ( insert Snake {