Initial commit: mail-server with WebFlux backend and Angular v22 Synthwave frontend
Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
-- Таблица пользователей
|
||||
CREATE TABLE users (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
email VARCHAR(255) UNIQUE NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
display_name VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Таблица папок
|
||||
CREATE TABLE folders (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
name VARCHAR(50) NOT NULL,
|
||||
type VARCHAR(20) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Таблица писем
|
||||
CREATE TABLE messages (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
folder_id BIGINT NOT NULL REFERENCES folders(id) ON DELETE CASCADE,
|
||||
sender_email VARCHAR(255) NOT NULL,
|
||||
sender_name VARCHAR(255),
|
||||
recipient_email VARCHAR(255) NOT NULL,
|
||||
subject VARCHAR(1000),
|
||||
body TEXT,
|
||||
is_read BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
is_spam BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
message_size BIGINT,
|
||||
received_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Таблица вложений
|
||||
CREATE TABLE attachments (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
message_id BIGINT NOT NULL REFERENCES messages(id) ON DELETE CASCADE,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
content_type VARCHAR(255),
|
||||
size_bytes BIGINT,
|
||||
file_path VARCHAR(500) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Таблица чёрного списка
|
||||
CREATE TABLE blacklist (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
sender_email VARCHAR(255) NOT NULL,
|
||||
reason VARCHAR(255),
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE (user_id, sender_email)
|
||||
);
|
||||
|
||||
-- Таблица контактов
|
||||
CREATE TABLE contacts (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE (user_id, email)
|
||||
);
|
||||
|
||||
-- Индексы для ускорения поиска
|
||||
CREATE INDEX idx_messages_folder_id ON messages(folder_id);
|
||||
CREATE INDEX idx_messages_received_at ON messages(received_at DESC);
|
||||
CREATE INDEX idx_messages_is_read ON messages(is_read);
|
||||
CREATE INDEX idx_messages_is_spam ON messages(is_spam);
|
||||
CREATE INDEX idx_folders_user_id ON folders(user_id);
|
||||
CREATE INDEX idx_attachments_message_id ON attachments(message_id);
|
||||
CREATE INDEX idx_blacklist_user_id ON blacklist(user_id);
|
||||
CREATE INDEX idx_contacts_user_id ON contacts(user_id);
|
||||
Reference in New Issue
Block a user