# 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, 
 user_id int NOT NULL,
 primary key (id),
 constraint fk_user_election foreign key (user_id) references users(id)
);

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

create table candidates (
 id int NOT NULL auto_increment,
 election_id int NOT NULL,
 name varchar(100) NOT NULL, 
 description text 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, 
 vote_id int NOT NULL, 
 constraint fk_vote_token foreign key (vote_id) references vote(id),
 primary key (id)
);

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

create table votes (
 id int NOT NULL auto_increment,
 voter_id int DEFAULT NULL,
 confirmed tinyint NOT NULL DEFAULT 0,
 constraint fk_vote_voter foreign key (voter_id) references voters(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)
);

# CREATE users TABLE
#####################################
CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `login` varchar(80) NOT NULL default '',
  `salted_password` varchar(40) NOT NULL default '',
  `email` varchar(60) NOT NULL default '',
  `firstname` varchar(40) default NULL,
  `lastname` varchar(40) default NULL,
  `salt` varchar(40) NOT NULL default '',
  `verified` int(11) default '0',
  `role` varchar(40) default NULL,
  `security_token` varchar(40) default NULL,
  `token_expiry` datetime default NULL,
  `created_at` datetime default NULL,
  `updated_at` datetime default NULL,
  `logged_in_at` datetime default NULL,
  `deleted` int(11) default '0',
  `delete_after` datetime default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

