Додані повідомлення та перепрацьована структура застосунку та api

This commit is contained in:
2026-03-15 00:25:10 +02:00
parent 85483b85bb
commit 4bc9c11512
101 changed files with 5763 additions and 2546 deletions

View File

@@ -1,6 +1,7 @@
const fs = require("fs");
const path = require("path");
const TelegramBot = require("node-telegram-bot-api");
const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");
const TOKEN = process.env.TELEGRAM_TOKEN;
const CHAT_ID = process.env.CHAT_ID;
@@ -9,6 +10,16 @@ const FILE = path.join(DB_PATH, "database.sqlite");
const bot = new TelegramBot(TOKEN, { polling: false });
// Настройки S3 / R2
const s3Client = new S3Client({
region: "auto",
endpoint: process.env.S3_ENDPOINT, // Напр: https://<id>.r2.cloudflarestorage.com
credentials: {
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
},
});
class Backup {
async database() {
try {
@@ -17,13 +28,25 @@ class Backup {
return;
}
console.log(`📤 Надсилаю файл: ${FILE}`);
const fileName = `backup_${new Date().toISOString().replace(/[:.]/g, "-")}.sqlite`;
// 1. Отправка в Telegram
await bot.sendDocument(CHAT_ID, fs.createReadStream(FILE), {
caption: "📦 Резервна копія бази даних",
caption: `📦 Резервна копія бази даних`,
});
console.log("✅ Telegram: успішно надіслано");
console.log("✅ Файл успішно надіслано!");
// 2. Отправка в S3 (R2)
const fileBuffer = fs.readFileSync(FILE);
const uploadParams = {
Bucket: process.env.S3_BUCKET_NAME,
Key: `sheep-service.com/database/${fileName}`, // Путь внутри бакета
Body: fileBuffer,
ContentType: "application/x-sqlite3",
};
await s3Client.send(new PutObjectCommand(uploadParams));
console.log("✅ S3: успішно завантажено в хмару");
} catch (err) {
console.error("❌ Помилка при надсиланні файлу:", err.message);
}