147 lines
3.3 KiB
JavaScript
147 lines
3.3 KiB
JavaScript
import * as dotenv from "dotenv";
|
|
dotenv.config({ path: ".env.local" });
|
|
import PocketBase from "pocketbase";
|
|
|
|
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
|
|
|
|
const PB_URL = process.env.NEXT_PUBLIC_PB_URL;
|
|
const ADMIN_EMAIL = process.env.PB_ADMIN_EMAIL;
|
|
const ADMIN_PASS = process.env.PB_ADMIN_PASS;
|
|
|
|
const pb = new PocketBase(PB_URL);
|
|
|
|
// --- ДАННЫЕ ДЛЯ ЗАГРУЗКИ ---
|
|
const rawDownloads = [
|
|
// --- RU ---
|
|
{
|
|
lang: "ru",
|
|
name: "Windows Клиент",
|
|
platformId: "windows",
|
|
version: "v1.2.4-stable",
|
|
status: "active",
|
|
storeLink: "https://github.com/netrunner-vpn/desktop",
|
|
order: 1,
|
|
},
|
|
{
|
|
lang: "ru",
|
|
name: "Android APK",
|
|
platformId: "android",
|
|
version: "v1.1.0-release",
|
|
status: "active",
|
|
storeLink: "", // Оставляем пустым для теста "Скоро в Store"
|
|
order: 2,
|
|
},
|
|
{
|
|
lang: "ru",
|
|
name: "Linux Core",
|
|
platformId: "linux",
|
|
version: "v1.2.4-build",
|
|
status: "active",
|
|
storeLink: "https://github.com/netrunner-vpn/core",
|
|
order: 3,
|
|
},
|
|
{
|
|
lang: "ru",
|
|
name: "macOS Desktop",
|
|
platformId: "macos",
|
|
version: "В разработке",
|
|
status: "dev",
|
|
storeLink: "",
|
|
order: 4,
|
|
},
|
|
{
|
|
lang: "ru",
|
|
name: "iOS App",
|
|
platformId: "ios",
|
|
version: "Бета-тест",
|
|
status: "dev",
|
|
storeLink: "",
|
|
order: 5,
|
|
},
|
|
|
|
// --- EN ---
|
|
{
|
|
lang: "en",
|
|
name: "Windows Client",
|
|
platformId: "windows",
|
|
version: "v1.2.4-stable",
|
|
status: "active",
|
|
storeLink: "https://github.com/netrunner-vpn/desktop",
|
|
order: 1,
|
|
},
|
|
{
|
|
lang: "en",
|
|
name: "Android APK",
|
|
platformId: "android",
|
|
version: "v1.1.0-release",
|
|
status: "active",
|
|
storeLink: "",
|
|
order: 2,
|
|
},
|
|
{
|
|
lang: "en",
|
|
name: "Linux Core",
|
|
platformId: "linux",
|
|
version: "v1.2.4-build",
|
|
status: "active",
|
|
storeLink: "https://github.com/netrunner-vpn/core",
|
|
order: 3,
|
|
},
|
|
{
|
|
lang: "en",
|
|
name: "macOS Desktop",
|
|
platformId: "macos",
|
|
version: "Coming soon",
|
|
status: "dev",
|
|
storeLink: "",
|
|
order: 4,
|
|
},
|
|
{
|
|
lang: "en",
|
|
name: "iOS App",
|
|
platformId: "ios",
|
|
version: "Under development",
|
|
status: "dev",
|
|
storeLink: "",
|
|
order: 5,
|
|
},
|
|
];
|
|
|
|
async function migrateDownloadsOnly() {
|
|
try {
|
|
console.log("🚀 Auth in progress...");
|
|
|
|
const authData = await pb.send("/api/admins/auth-with-password", {
|
|
method: "POST",
|
|
body: { identity: ADMIN_EMAIL, password: ADMIN_PASS },
|
|
});
|
|
pb.authStore.save(authData.token, authData.admin);
|
|
|
|
console.log("🔑 Access Granted. Syncing downloads...\n");
|
|
|
|
for (let item of rawDownloads) {
|
|
const { lang, ...cleanData } = item;
|
|
const targetTable = `downloads_${lang}`;
|
|
|
|
try {
|
|
// Создаем запись
|
|
await pb.collection(targetTable).create(cleanData);
|
|
console.log(
|
|
`✅ [${targetTable}] Created: ${cleanData.name} (${cleanData.platformId})`,
|
|
);
|
|
} catch (err) {
|
|
console.error(
|
|
`❌ [${targetTable}] Failed ${cleanData.name}:`,
|
|
err.message,
|
|
);
|
|
}
|
|
}
|
|
|
|
console.log("\n🏁 All downloads synchronized.");
|
|
} catch (err) {
|
|
console.error("💥 Global Error:", err.message);
|
|
}
|
|
}
|
|
|
|
migrateDownloadsOnly();
|