# CREATE users TABLE
#####################################

#drop table if exists users;
#create table users (
# id int NOT NULL auto_increment,
# login varchar(80) default NULL,
# password varchar(40) default NULL,
# primary key (id)
#);

## Create a default system user to own stage directions
## and similar. Users cannot log in.
#insert into users ( id, login ) values ( 1, "System Defaults" );

# CREATE elections TABLE
#####################################

create table elections (
 id int NOT NULL auto_increment,
 name varchar(100) NOT NULL, 
 description TEXT NOT NULL, 
 anonymous tinyint NOT NULL DEFAULT 0, 
 startdate datetime NOT NULL, 
 enddate datetime, 
 primary key (id)
);

# CREATE candidates TABLE
#####################################

create table candidates (
 id int NOT NULL auto_increment,
 election_id int NOT NULL,
 name varchar(100) NOT NULL, 
 picture blob NOT NULL, 
 primary key (id)
);

# CREATE voters TABLE
#####################################

create table voters (
 id int NOT NULL auto_increment,
 email varchar(100) NOT NULL, 
 password varchar(100) NOT NULL, 
 contacted tinyint NOT NULL DEFAULT 0, 
 election_id int NOT NULL, 
 constraint fk_election_voter foreign key (election_id) references election(id),
 primary key (id)
);

# CREATE tokens TABLE
#####################################

create table tokens(
 id int NOT NULL auto_increment,
 token varchar(100) NOT NULL, 
 primary key (id)
);

# CREATE votes TABLE
#####################################

create table votes (
 id int NOT NULL auto_increment,
 voter_id int DEFAULT NULL,
 token_id int DEFAULT NULL,
 constraint fk_vote_voter foreign key (voter_id) references voters(id),
 constraint fk_vote_token foreign key (token_id) references token(id),
 primary key (id)
);

# CREATE rankings TABLE
#####################################

create table rankings (
 id int NOT NULL auto_increment,
 vote_id int DEFAULT NULL,
 candidate_id int DEFAULT NULL,
 rank int DEFAULT NULL,
 primary key (id)
);

