46 lines
1.1 KiB
SQL
46 lines
1.1 KiB
SQL
CREATE TABLE IF NOT EXISTS groups (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL UNIQUE,
|
|
created_at TIMESTAMPTZ DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS students (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR(150) NOT NULL UNIQUE,
|
|
group_id INT REFERENCES groups(id),
|
|
created_at TIMESTAMPTZ DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS entries (
|
|
id SERIAL PRIMARY KEY,
|
|
student_name VARCHAR(150) NOT NULL,
|
|
group_id INT NOT NULL REFERENCES groups(id),
|
|
description TEXT NOT NULL,
|
|
photo_path VARCHAR(255),
|
|
created_at TIMESTAMPTZ DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS settings (
|
|
key TEXT PRIMARY KEY,
|
|
value TEXT
|
|
);
|
|
|
|
INSERT INTO settings (key, value) VALUES ('spam_interval_min', '30')
|
|
ON CONFLICT (key) DO NOTHING;
|
|
|
|
CREATE TABLE IF NOT EXISTS share_links (
|
|
id SERIAL PRIMARY KEY,
|
|
token VARCHAR(40) UNIQUE NOT NULL,
|
|
name VARCHAR(200) NOT NULL,
|
|
group_id INT REFERENCES groups(id),
|
|
date_from DATE,
|
|
date_to DATE,
|
|
created_at TIMESTAMPTZ DEFAULT now()
|
|
);
|
|
|
|
INSERT INTO groups (name) VALUES
|
|
('Beginner'),
|
|
('Intermediate'),
|
|
('Advanced')
|
|
ON CONFLICT (name) DO NOTHING;
|