This commit is contained in:
Michael Zhang 2018-09-24 18:03:04 -05:00
parent 7d58851583
commit dbf6c870c2
No known key found for this signature in database
GPG Key ID: A1B65B603268116B
3 changed files with 77 additions and 5 deletions

View File

@ -1,2 +1,4 @@
DROP TABLE `chals`;
DROP TABLE `users`;
DROP TABLE IF EXISTS `solves`;
DROP TABLE IF EXISTS `chals`;
DROP TABLE IF EXISTS `users`;
DROP TABLE IF EXISTS `teams`;

View File

@ -1,9 +1,49 @@
CREATE TABLE IF NOT EXISTS `chals` (
`id` INTEGER PRIMARY KEY
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`title` VARCHAR(64) NOT NULL,
`enabled` BOOLEAN NOT NULL DEFAULT FALSE,
-- constraints
UNIQUE(`title`)
);
CREATE TABLE IF NOT EXISTS `teams` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
-- constraints
UNIQUE (`name`)
);
CREATE TABLE IF NOT EXISTS `users` (
`id` INTEGER PRIMARY KEY,
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`email` VARCHAR(128) NOT NULL,
`password` VARCHAR(64) NOT NULL
`email_verified` BOOLEAN NOT NULL DEFAULT FALSE,
`password` VARCHAR(64) NOT NULL,
`admin` BOOLEAN NOT NULL DEFAULT FALSE,
-- foreign keys
`team_id` INTEGER NULL,
-- constraints
UNIQUE (`email`),
CONSTRAINT `user_team_fk` FOREIGN KEY (`team_id`) REFERENCES `teams`(`id`)
);
CREATE TABLE IF NOT EXISTS `solves` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`timestamp` DATETIME NOT NULL DEFAULT NOW(),
`flag` TEXT NOT NULL,
-- foreign keys
`chal_id` INTEGER NOT NULL,
`team_id` INTEGER NOT NULL,
`user_id` INTEGER NOT NULL,
-- constraints
UNIQUE(`chal_id`, `team_id`),
CONSTRAINT `solve_chal_fk` FOREIGN KEY (`chal_id`) REFERENCES `chals`(`id`),
CONSTRAINT `solve_team_fk` FOREIGN KEY (`team_id`) REFERENCES `teams`(`id`),
CONSTRAINT `solve_user_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
);

View File

@ -1,6 +1,26 @@
table! {
chals (id) {
id -> Integer,
title -> Varchar,
enabled -> Bool,
}
}
table! {
solves (id) {
id -> Integer,
timestamp -> Datetime,
flag -> Text,
chal_id -> Integer,
team_id -> Integer,
user_id -> Integer,
}
}
table! {
teams (id) {
id -> Integer,
name -> Varchar,
}
}
@ -8,11 +28,21 @@ table! {
users (id) {
id -> Integer,
email -> Varchar,
email_verified -> Bool,
password -> Varchar,
admin -> Bool,
team_id -> Nullable<Integer>,
}
}
joinable!(solves -> chals (chal_id));
joinable!(solves -> teams (team_id));
joinable!(solves -> users (user_id));
joinable!(users -> teams (team_id));
allow_tables_to_appear_in_same_query!(
chals,
solves,
teams,
users,
);