Finish Pacosako + add GameStat table to know how many live games are played
[vchess.git] / server / db / create.sql
index 9a8f785..e4035a1 100644 (file)
@@ -3,7 +3,8 @@
 create table Variants (
   id integer primary key,
   name varchar unique,
-  description text
+  description text,
+  noProblems boolean
 );
 
 create table Users (
@@ -14,11 +15,21 @@ create table Users (
   loginTime datetime,
   sessionToken varchar,
   created datetime,
-  notify boolean
+  notify boolean,
+  bio text default ''
 );
 
--- All the following tables are for correspondance play only
--- (Live games are stored in browser)
+create table Problems (
+  id integer primary key,
+  added datetime,
+  fen varchar,
+  uid integer,
+  vid integer,
+  instruction text,
+  solution text,
+  foreign key (uid) references Users(id),
+  foreign key (vid) references Variants(id)
+);
 
 create table Challenges (
   id integer primary key,
@@ -26,40 +37,57 @@ create table Challenges (
   uid integer,
   target integer,
   vid integer,
+  randomness integer,
   fen varchar,
-  timeControl varchar,
+  cadence varchar,
   foreign key (uid) references Users(id),
   foreign key (vid) references Variants(id)
 );
 
--- NOTE: no need for a "created" field, it's deduced from first move playing time
+create table GameStat (
+  vid integer,
+  total integer default 0,
+  foreign key (vid) references Variants(id)
+);
+
 create table Games (
   id integer primary key,
   vid integer,
   fenStart varchar, --initial state
   fen varchar, --current state
-  score varchar,
-  timeControl varchar,
-  created datetime, --used only for DB cleaning
-  foreign key (vid) references Variants(id)
+  white integer,
+  black integer,
+  score varchar default '*',
+  scoreMsg varchar,
+  cadence varchar,
+  randomness integer, --for rematch
+  created datetime,
+  drawOffer character default '',
+  rematchOffer character default '',
+  deletedByWhite boolean,
+  deletedByBlack boolean,
+  chatReadWhite datetime,
+  chatReadBlack datetime,
+  foreign key (vid) references Variants(id),
+  foreign key (white) references Users(id),
+  foreign key (black) references Users(id)
 );
 
--- Store informations about players in a corr game
-create table Players (
+create table Chats (
   gid integer,
-  uid integer,
-  color character,
-  foreign key (gid) references Games(id),
-  foreign key (uid) references Users(id)
+  name varchar,
+  msg varchar,
+  added datetime
 );
 
 create table Moves (
   gid integer,
   squares varchar, --description, appear/vanish/from/to
-  message varchar,
   played datetime, --when was this move played?
   idx integer, --index of the move in the game
   foreign key (gid) references Games(id)
 );
 
+create index scoreIdx on Games(score);
+
 pragma foreign_keys = on;