BIG_UPDATE deleted vps, added s3 infrastructure.
This commit is contained in:
132
ospabhost/backend/manual-migration.sql
Normal file
132
ospabhost/backend/manual-migration.sql
Normal file
@@ -0,0 +1,132 @@
|
||||
-- Manual migration SQL для добавления новых таблиц
|
||||
-- Выполнить в MySQL базе данных ospabhost
|
||||
|
||||
-- 1. Таблица сеансов (Sessions)
|
||||
CREATE TABLE IF NOT EXISTS `session` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`userId` INT NOT NULL,
|
||||
`token` VARCHAR(500) NOT NULL,
|
||||
`ipAddress` VARCHAR(255) NULL,
|
||||
`userAgent` TEXT NULL,
|
||||
`device` VARCHAR(255) NULL,
|
||||
`browser` VARCHAR(255) NULL,
|
||||
`location` VARCHAR(255) NULL,
|
||||
`lastActivity` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`expiresAt` DATETIME(3) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `session_token_key` (`token`),
|
||||
INDEX `session_userId_idx` (`userId`),
|
||||
CONSTRAINT `session_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 2. Таблица истории входов (Login History)
|
||||
CREATE TABLE IF NOT EXISTS `login_history` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`userId` INT NOT NULL,
|
||||
`ipAddress` VARCHAR(255) NOT NULL,
|
||||
`userAgent` TEXT NULL,
|
||||
`device` VARCHAR(255) NULL,
|
||||
`browser` VARCHAR(255) NULL,
|
||||
`location` VARCHAR(255) NULL,
|
||||
`success` BOOLEAN NOT NULL DEFAULT true,
|
||||
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `login_history_userId_idx` (`userId`),
|
||||
INDEX `login_history_createdAt_idx` (`createdAt`),
|
||||
CONSTRAINT `login_history_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 3. Таблица SSH ключей
|
||||
CREATE TABLE IF NOT EXISTS `ssh_key` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`userId` INT NOT NULL,
|
||||
`name` VARCHAR(255) NOT NULL,
|
||||
`publicKey` TEXT NOT NULL,
|
||||
`fingerprint` VARCHAR(255) NOT NULL,
|
||||
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`lastUsed` DATETIME(3) NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `ssh_key_userId_idx` (`userId`),
|
||||
CONSTRAINT `ssh_key_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 4. Таблица API ключей
|
||||
CREATE TABLE IF NOT EXISTS `api_key` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`userId` INT NOT NULL,
|
||||
`name` VARCHAR(255) NOT NULL,
|
||||
`key` VARCHAR(64) NOT NULL,
|
||||
`prefix` VARCHAR(16) NOT NULL,
|
||||
`permissions` TEXT NULL,
|
||||
`lastUsed` DATETIME(3) NULL,
|
||||
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`expiresAt` DATETIME(3) NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `api_key_key_key` (`key`),
|
||||
INDEX `api_key_userId_idx` (`userId`),
|
||||
INDEX `api_key_key_idx` (`key`),
|
||||
CONSTRAINT `api_key_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 5. Таблица настроек уведомлений
|
||||
CREATE TABLE IF NOT EXISTS `notification_settings` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`userId` INT NOT NULL,
|
||||
`emailServerCreated` BOOLEAN NOT NULL DEFAULT true,
|
||||
`emailServerStopped` BOOLEAN NOT NULL DEFAULT true,
|
||||
`emailBalanceLow` BOOLEAN NOT NULL DEFAULT true,
|
||||
`emailPaymentCharged` BOOLEAN NOT NULL DEFAULT true,
|
||||
`emailTicketReply` BOOLEAN NOT NULL DEFAULT true,
|
||||
`emailNewsletter` BOOLEAN NOT NULL DEFAULT false,
|
||||
`pushServerCreated` BOOLEAN NOT NULL DEFAULT true,
|
||||
`pushServerStopped` BOOLEAN NOT NULL DEFAULT true,
|
||||
`pushBalanceLow` BOOLEAN NOT NULL DEFAULT true,
|
||||
`pushPaymentCharged` BOOLEAN NOT NULL DEFAULT true,
|
||||
`pushTicketReply` BOOLEAN NOT NULL DEFAULT true,
|
||||
`updatedAt` DATETIME(3) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `notification_settings_userId_key` (`userId`),
|
||||
CONSTRAINT `notification_settings_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 6. Таблица профиля пользователя
|
||||
CREATE TABLE IF NOT EXISTS `user_profile` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`userId` INT NOT NULL,
|
||||
`avatarUrl` VARCHAR(255) NULL,
|
||||
`phoneNumber` VARCHAR(255) NULL,
|
||||
`timezone` VARCHAR(255) NULL DEFAULT 'Europe/Moscow',
|
||||
`language` VARCHAR(255) NULL DEFAULT 'ru',
|
||||
`profilePublic` BOOLEAN NOT NULL DEFAULT false,
|
||||
`showEmail` BOOLEAN NOT NULL DEFAULT false,
|
||||
`twoFactorEnabled` BOOLEAN NOT NULL DEFAULT false,
|
||||
`twoFactorSecret` TEXT NULL,
|
||||
`updatedAt` DATETIME(3) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `user_profile_userId_key` (`userId`),
|
||||
CONSTRAINT `user_profile_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 7. Добавить поле passwordChangedAt в таблицу server (для скрытия пароля через 30 минут)
|
||||
ALTER TABLE `server` ADD COLUMN `passwordChangedAt` DATETIME(3) NULL AFTER `rootPassword`;
|
||||
|
||||
-- Готово! Теперь выполните на сервере:
|
||||
-- После выполнения этих запросов запустите:
|
||||
-- npx prisma generate
|
||||
-- npm run build
|
||||
-- pm2 restart ospab-backend
|
||||
|
||||
-- ========================================
|
||||
-- ОБНОВЛЕНИЕ: Добавление поля passwordChangedAt в таблицу server
|
||||
-- ========================================
|
||||
|
||||
-- Добавляем поле для отслеживания времени изменения пароля
|
||||
ALTER TABLE `server`
|
||||
ADD COLUMN `passwordChangedAt` DATETIME(3) NULL AFTER `rootPassword`;
|
||||
|
||||
-- Устанавливаем текущую дату для существующих серверов
|
||||
UPDATE `server`
|
||||
SET `passwordChangedAt` = `createdAt`
|
||||
WHERE `passwordChangedAt` IS NULL AND `rootPassword` IS NOT NULL;
|
||||
|
||||
Reference in New Issue
Block a user