Files
netrunner-landing/upload.mjs
T
2026-04-19 16:05:05 +10:00

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();