This commit is contained in:
2026-02-19 21:39:17 +05:00
parent 2df88ad168
commit 99b968fcbf
7 changed files with 1993 additions and 3 deletions

View File

@@ -500,7 +500,45 @@ function createSQLiteTables() {
)`);
console.log('✅ Таблицы для типов документов и документов (расширенные задачи) созданы');
// Таблица для сообщений чата задач
db.run(`CREATE TABLE IF NOT EXISTS task_chat_messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
task_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
message TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
is_edited BOOLEAN DEFAULT false,
is_deleted BOOLEAN DEFAULT false,
reply_to_id INTEGER,
FOREIGN KEY (task_id) REFERENCES tasks (id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
FOREIGN KEY (reply_to_id) REFERENCES task_chat_messages (id) ON DELETE SET NULL
)`);
// Таблица для файлов в сообщениях
db.run(`CREATE TABLE IF NOT EXISTS task_chat_files (
id INTEGER PRIMARY KEY AUTOINCREMENT,
message_id INTEGER NOT NULL,
file_path TEXT NOT NULL,
original_name TEXT NOT NULL,
file_size INTEGER NOT NULL,
file_type TEXT,
uploaded_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (message_id) REFERENCES task_chat_messages (id) ON DELETE CASCADE
)`);
// Таблица для прочитанных сообщений
db.run(`CREATE TABLE IF NOT EXISTS task_chat_reads (
id INTEGER PRIMARY KEY AUTOINCREMENT,
message_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
read_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE(message_id, user_id),
FOREIGN KEY (message_id) REFERENCES task_chat_messages (id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE
)`);
console.log('✅ Таблица для сообщений чата задач созданы');
// Создаем индексы для улучшения производительности
createSQLiteIndexes();
@@ -623,7 +661,13 @@ function createSQLiteIndexes() {
// Индексы для простых документов
"CREATE INDEX IF NOT EXISTS idx_simple_documents_task_id ON simple_documents(task_id)",
"CREATE INDEX IF NOT EXISTS idx_simple_documents_document_number ON simple_documents(document_number)"
"CREATE INDEX IF NOT EXISTS idx_simple_documents_document_number ON simple_documents(document_number)",
// Индексы для оптимизации
"CREATE INDEX IF NOT EXISTS idx_task_chat_messages_task_id ON task_chat_messages(task_id)",
"CREATE INDEX IF NOT EXISTS idx_task_chat_messages_created_at ON task_chat_messages(created_at)",
"CREATE INDEX IF NOT EXISTS idx_task_chat_files_message_id ON task_chat_files(message_id)",
"CREATE INDEX IF NOT EXISTS idx_task_chat_reads_message_id ON task_chat_reads(message_id)",
"CREATE INDEX IF NOT EXISTS idx_task_chat_reads_user_id ON task_chat_reads(user_id)"
];
indexes.forEach(indexQuery => {