From 04385d528e8f246660fe59597482ccad4825ed5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigurhj=C3=B6rtur=20Snorrason?= Date: Thu, 1 Nov 2018 21:42:46 +0100 Subject: [PATCH] Fixed bad db enforcements --- .../glicko/domain/service/GameService.java | 5 ++- .../resources/db/migration/V1__initial.sql | 42 +++++++++---------- .../desperate/glicko/GameApiTest.groovy | 12 ++++++ 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/main/java/solutions/desperate/glicko/domain/service/GameService.java b/src/main/java/solutions/desperate/glicko/domain/service/GameService.java index 159077a..5867025 100644 --- a/src/main/java/solutions/desperate/glicko/domain/service/GameService.java +++ b/src/main/java/solutions/desperate/glicko/domain/service/GameService.java @@ -43,14 +43,15 @@ public void addGame(Game game, UUID league) { Player updatedBlack = glicko.glicko2(black, white, game.result() == 1 ? 0.0 : game.result() == 0 ? 0.5 : 1.0); query.transaction().inNoResult(() -> { - query.update("INSERT INTO Game (id, white_id, black_id, result, written_result, played_at) VALUES (?, ?, ?, ?, ?, ?)") + query.update("INSERT INTO Game (id, white_id, black_id, result, written_result, played_at, league_id) VALUES (?, ?, ?, ?, ?, ?, ?)") .params( game.id().toString(), white.id().toString(), black.id().toString(), game.result(), game.writtenResult(), - game.timestamp()) + game.timestamp(), + league.toString()) .run(); playerService.updatePlayer(updatedWhite, updatedBlack); }); diff --git a/src/main/resources/db/migration/V1__initial.sql b/src/main/resources/db/migration/V1__initial.sql index 434f3f3..703ba95 100644 --- a/src/main/resources/db/migration/V1__initial.sql +++ b/src/main/resources/db/migration/V1__initial.sql @@ -1,38 +1,38 @@ create table league ( - id varchar(255) PRIMARY KEY, - name varchar(255) UNIQUE, - draw_allowed boolean, + id varchar(255) PRIMARY KEY NOT NULL, + name varchar(255) UNIQUE NOT NULL, + draw_allowed boolean NOT NULL, period_length int, - scored_results boolean + scored_results boolean NOT NULL ); create table player ( - id varchar(255) PRIMARY KEY, - name varchar(255), - rating varchar(255), - rd varchar(255), - volatility varchar(255), - league_id varchar(255) references League(id), + id varchar(255) PRIMARY KEY NOT NULL, + name varchar(255) NOT NULL, + rating varchar(255) NOT NULL, + rd varchar(255) NOT NULL, + volatility varchar(255) NOT NULL, + league_id varchar(255) NOT NULL references League(id), UNIQUE (name, league_id) ); create table game ( - id varchar(255) PRIMARY KEY, - white_id varchar(255) references Player(id), - black_id varchar(255) references Player(id), - result int, + id varchar(255) PRIMARY KEY NOT NULL, + white_id varchar(255) NOT NULL references Player(id), + black_id varchar(255) NOT NULL references Player(id), + result int NOT NULL, written_result varchar(255), - played_at TIMESTAMP, - league_id varchar(255) references League(id) + played_at TIMESTAMP NOT NULL, + league_id varchar(255) NOT NULL references League(id) ); create table api_user ( - username varchar(255) PRIMARY KEY, - password varchar(255) + username varchar(255) PRIMARY KEY NOT NULL, + password varchar(255) NOT NULL ); create table token ( - token varchar(255) PRIMARY KEY, - username varchar(255) references api_user(username), - expiry TIMESTAMP + token varchar(255) PRIMARY KEY NOT NULL, + username varchar(255) NOT NULL references api_user(username), + expiry TIMESTAMP NOT NULL ); diff --git a/src/test/groovy/solutions/desperate/glicko/GameApiTest.groovy b/src/test/groovy/solutions/desperate/glicko/GameApiTest.groovy index b167930..83e03d8 100644 --- a/src/test/groovy/solutions/desperate/glicko/GameApiTest.groovy +++ b/src/test/groovy/solutions/desperate/glicko/GameApiTest.groovy @@ -32,6 +32,12 @@ class GameApiTest extends GlickoTestApp { and: new JsonSlurper().parse(client.httpGet("/${league.id}/player/${player1.id}").body().byteStream()).rating == 1578.801716729907 new JsonSlurper().parse(client.httpGet("/${league.id}/player/${player2.id}").body().byteStream()).rating == 1421.198283270093 + + when: + def allGames = new JsonSlurper().parse(client.httpGet("/${league.id}/game").body().byteStream()) + + then: + allGames.size() == 1 } def "Can add a game between three players"() { @@ -74,5 +80,11 @@ class GameApiTest extends GlickoTestApp { and: new JsonSlurper().parse(client.httpGet("/${league.id}/player/${player1.id}").body().byteStream()).rating == 1499.4739527513502 new JsonSlurper().parse(client.httpGet("/${league.id}/player/${player3.id}").body().byteStream()).rating == 1596.4657600150126 + + when: + def allGames = new JsonSlurper().parse(client.httpGet("/${league.id}/game").body().byteStream()) + + then: + allGames.size() == 2 } }