summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2024-03-14 20:03:52 +0100
committerTor Andersson <tor@ccxvii.net>2024-03-16 15:13:32 +0100
commitd288108a7d294389a21a3df9d3f7fbcc5697ffac (patch)
tree00ae1a91be46d04f53497d35c5cc1c9cbf0bb487
parent0bfc37790c286c4a8a979a6ace15171340d45be5 (diff)
downloadserver-d288108a7d294389a21a3df9d3f7fbcc5697ffac.tar.gz
Add and track score in player/role assignment.
2 points for a win, 1 point for a tie, 0 points for a loss.
-rw-r--r--schema.sql21
-rw-r--r--server.js4
2 files changed, 23 insertions, 2 deletions
diff --git a/schema.sql b/schema.sql
index a0a3b02..049f6a8 100644
--- a/schema.sql
+++ b/schema.sql
@@ -454,6 +454,7 @@ create table if not exists players (
is_invite integer,
time_used real,
time_added real,
+ score integer,
primary key (game_id, role)
) without rowid;
@@ -648,6 +649,26 @@ begin
games.game_id = old.game_id;
end;
+-- Trigger to update player score when game ends.
+
+drop trigger if exists trigger_update_score;
+create trigger trigger_update_score after update of result on games
+begin
+ update players
+ set score = (
+ case
+ when new.result is null then null
+ when new.result = role then 2
+ when new.result = 'Draw' then 1
+ when instr(new.result, role) then 1
+ else 0
+ end
+ )
+ where
+ players.game_id = new.game_id
+ ;
+end;
+
-- Trigger to track time spent!
drop trigger if exists trigger_time_used_update;
diff --git a/server.js b/server.js
index 7ab5214..e9baf8d 100644
--- a/server.js
+++ b/server.js
@@ -3143,7 +3143,7 @@ const SQL_USER_STATS = SQL(`
titles.title_name,
scenario,
role,
- sum(role=result) as won,
+ sum(score) / 2 as won,
count(*) as total
from
players
@@ -3163,7 +3163,7 @@ const SQL_USER_STATS = SQL(`
titles.title_name,
scenario,
null as role,
- sum(role=result) as won,
+ sum(score) / 2 as won,
count(*) as total
from
players