Files
HousingManagement-server/database_config.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');