+drop table if exists user_choice;
+drop table if exists choices;
+drop table if exists attachments;
drop table if exists votes;
+drop table if exists user_group;
+drop table if exists groups;
+drop table if exists users;
+
+create table users (
+ id INTEGER primary key autoincrement,
+ email TEXT unique not null,
+ password TEXT not null,
+ name TEXT unique,
+ organization TEXT,
+ is_admin INTEGER default 0 not null,
+ key TEXT
+);
+
+create table groups (
+ id INTEGER primary key autoincrement,
+ name TEXT,
+ system INTEGER default 0 not null
+);
+
+create table user_group (
+ id_user INTEGER,
+ id_group INTEGER,
+ FOREIGN KEY(id_user) REFERENCES users(id),
+ FOREIGN KEY(id_group) REFERENCES groups(id),
+ PRIMARY KEY(id_user, id_group)
+);
+
create table votes (
- id integer primary key autoincrement,
- title string not null,
- description stringnot null
+ id INTEGER primary key autoincrement,
+ title TEXT not null,
+ description TEXT,
+ category TEXT,
+ date_begin INTEGER default CURRENT_TIMESTAMP not null,
+ date_end INTEGER not null,
+ is_transparent INTEGER default 1 not null,
+ is_public INTEGER default 1 not null,
+ is_multiplechoice INTEGER default 1 not null,
+ is_weighted INTEGER default 0 not null,
+ is_open INTEGER default 0 not null,
+ id_author INTEGER, -- :COMMENT:maethor:120528: not null ?
+ id_group INTEGER default 1 not null,
+ FOREIGN KEY(id_author) REFERENCES users(id)
+ FOREIGN KEY(id_group) REFERENCES groups(id)
);
+create table attachments (
+ id INTEGER primary key autoincrement,
+ url TEXT not null,
+ id_vote INTEGER not null,
+ FOREIGN KEY(id_vote) REFERENCES vote(id)
+);
+
+create table choices (
+ id INTEGER primary key autoincrement,
+ name TEXT not null,
+ id_vote INTEGER not null,
+ FOREIGN KEY(id_vote) REFERENCES vote(id)
+);
+
+create table user_choice (
+ id_user INTEGER,
+ id_choice INTEGER,
+ weight INTEGER,
+ FOREIGN KEY(id_user) REFERENCES users(id),
+ FOREIGN KEY(id_choice) REFERENCES choices(id),
+ PRIMARY KEY(id_user, id_choice)
+);
+
+-- Test data
+
+insert into users (email, password, name, organization, is_admin, key) values ("admin@admin.fr", "d033e22ae348aeb5660fc2140aec35850c4da997", "Toto (admin) Tata", "World corp", 1, "test"); -- mdp = admin
+insert into groups (id, name, system) values (1, "Tous", 1);
+insert into groups (name) values ("CA");
+insert into groups (name) values ("Members");
+