Finish Pacosako + add GameStat table to know how many live games are played
[vchess.git] / server / db / create.sql
index 936992c..e4035a1 100644 (file)
@@ -1,86 +1,93 @@
 -- Database should be in this folder, and named 'vchess.sqlite'
 
 create table Variants (
-       id integer primary key,
-       name varchar unique,
-       description text
+  id integer primary key,
+  name varchar unique,
+  description text,
+  noProblems boolean
 );
 
 create table Users (
-       id integer primary key,
-       name varchar unique,
-       email varchar unique,
-       loginToken varchar,
-       loginTime datetime,
-       sessionToken varchar,
-       notify boolean
+  id integer primary key,
+  name varchar unique,
+  email varchar unique,
+  loginToken varchar,
+  loginTime datetime,
+  sessionToken varchar,
+  created datetime,
+  notify boolean,
+  bio text default ''
 );
 
 create table Problems (
-       id integer primary key,
-       added datetime,
-       uid integer,
-       vid integer,
-       fen varchar,
-       instructions text,
-       solution text,
-       foreign key (uid) references Users(id),
-       foreign key (vid) references Variants(id)
+  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)
 );
 
--- All the following tables are for correspondance play only
--- (Live games are stored only in browsers)
-
 create table Challenges (
-       id integer primary key,
-       added datetime,
-       uid integer,
-       vid integer,
-       nbPlayers integer,
-       fen varchar,
-       mainTime integer,
-       addTime integer,
-       foreign key (uid) references Users(id),
-       foreign key (vid) references Variants(id)
+  id integer primary key,
+  added datetime,
+  uid integer,
+  target integer,
+  vid integer,
+  randomness integer,
+  fen varchar,
+  cadence varchar,
+  foreign key (uid) references Users(id),
+  foreign key (vid) references Variants(id)
 );
 
--- Store informations about players who accept a challenge
-create table WillPlay (
-       cid integer,
-       uid integer,
-       foreign key (cid) references Challenges(id),
-       foreign key (uid) references Users(id)
+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,
-       mainTime integer,
-       addTime integer,
-       foreign key (vid) references Variants(id)
+  id integer primary key,
+  vid integer,
+  fenStart varchar, --initial state
+  fen varchar, --current state
+  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 (
-       gid integer,
-       uid integer,
-       color character,
-       rtime integer, --remaining time in milliseconds
-       foreign key (gid) references Games(id),
-       foreign key (uid) references Users(id)
+create table Chats (
+  gid integer,
+  name varchar,
+  msg varchar,
+  added datetime
 );
 
 create table Moves (
-       gid integer,
-       move varchar,
-       message varchar,
-       played datetime, --when was this move played?
-       idx integer, --index of the move in the game
-       color character, --required for e.g. Marseillais Chess
-       foreign key (gid) references Games(id)
+  gid integer,
+  squares varchar, --description, appear/vanish/from/to
+  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;