-- 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)
-);
-
--- 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)
+ 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)
);
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;