93 lines
3.5 KiB
SQL
93 lines
3.5 KiB
SQL
# Copy-paste and execute the output of the following command
|
|
# to clear database without deleting it or recreating schema
|
|
SELECT 'DROP TABLE IF EXISTS "' || tablename || '" CASCADE;' from pg_tables;
|
|
|
|
|
|
CREATE TABLE users (
|
|
id SERIAL PRIMARY KEY,
|
|
username TEXT NOT NULL UNIQUE,
|
|
password TEXT NOT NULL,
|
|
first_name TEXT NOT NULL,
|
|
last_name TEXT NOT NULL,
|
|
role TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE addresses (
|
|
id SERIAL PRIMARY KEY,
|
|
city TEXT NOT NULL,
|
|
street TEXT NOT NULL,
|
|
house TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE user_address (
|
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
address_id INT REFERENCES addresses(id) ON DELETE CASCADE,
|
|
PRIMARY KEY (user_id, address_id)
|
|
);
|
|
|
|
CREATE TABLE user_preferences (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT REFERENCES users(id),
|
|
allow_notifications BOOLEAN NOT NULL
|
|
);
|
|
|
|
CREATE TABLE attachments (
|
|
id SERIAL PRIMARY KEY,
|
|
type TEXT NOT NULL,
|
|
file_path TEXT NOT NULL,
|
|
size_bytes INT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE chats (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT REFERENCES users(id) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE messages (
|
|
id SERIAL PRIMARY KEY,
|
|
chat_id INT REFERENCES chats(id),
|
|
sender_id INT REFERENCES users(id),
|
|
type TEXT NOT NULL,
|
|
content_text TEXT,
|
|
thumbnail TEXT,
|
|
attachment_id INT REFERENCES attachments(id),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE employee_chat (
|
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
chat_id INT REFERENCES chats(id) ON DELETE CASCADE,
|
|
PRIMARY KEY (user_id, chat_id)
|
|
);
|
|
|
|
INSERT INTO users (username, password, first_name, last_name, role) VALUES
|
|
('admin', 'ZPQFaYapAAMJ3MYdNcfrI4JFm4J8IEXg9LzrLKA63Q4=', 'Олег', 'Шабунов', 'EMPLOYEE'),
|
|
('user1', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Евдокия', 'Глебова', 'RESIDENT'),
|
|
('user2', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Вероника', 'Тарасова', 'RESIDENT'),
|
|
('user3', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Матвей', 'Богомолов', 'RESIDENT'),
|
|
('user4', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Тимофей', 'Петров', 'RESIDENT'),
|
|
('user5', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Тамара', 'Кузьмина', 'RESIDENT'),
|
|
('user6', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Екатерина', 'Русакова', 'RESIDENT'),
|
|
('user7', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Илья', 'Третьяков', 'RESIDENT'),
|
|
('user8', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Дмитрий', 'Астахов', 'RESIDENT'),
|
|
('user9', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Мария', 'Иванова', 'RESIDENT'),
|
|
('user10', 'QtpePC48gDW90KphWc/qYOZRiV3UZIhA7DjRNPtkTi0=', 'Арина', 'Журавлева', 'RESIDENT');
|
|
|
|
INSERT INTO addresses (city, street, house) VALUES
|
|
('Ульяновск', 'Камышинская', '19'),
|
|
('Ульяновск', 'Камышинская', '20'),
|
|
('Ульяновск', 'Камышинская', '21'),
|
|
('Ульяновск', 'Камышинская', '22'),
|
|
('Ульяновск', 'Камышинская', '23'),
|
|
('Ульяновск', 'Камышинская', '24'),
|
|
('Ульяновск', 'Камышинская', '25'),
|
|
('Ульяновск', 'Камышинская', '26'),
|
|
('Ульяновск', 'Шолмова', '20'),
|
|
('Ульяновск', 'Шолмова', '21'),
|
|
('Ульяновск', 'Шолмова', '22'),
|
|
('Ульяновск', 'Шолмова', '23');
|