From 3c407afae5277ada26f69c0cb8190aa058a88f51 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Thu, 21 Oct 2021 01:42:35 -0400 Subject: [PATCH] Report ia sync to Discord --- .../skin-database/api/DiscordEventHandler.ts | 18 ++++++++++++++++++ packages/skin-database/api/app.ts | 4 +++- packages/skin-database/cli.ts | 2 +- .../skin-database/tasks/syncWithArchive.ts | 10 ++++++++-- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/packages/skin-database/api/DiscordEventHandler.ts b/packages/skin-database/api/DiscordEventHandler.ts index 4311f603..87a4db66 100644 --- a/packages/skin-database/api/DiscordEventHandler.ts +++ b/packages/skin-database/api/DiscordEventHandler.ts @@ -101,6 +101,24 @@ export default class DiscordEventHandler { await dest.send(message); break; } + + case "SYNCED_TO_ARCHIVE": { + const dest = await this.getChannel(Config.SKIN_UPLOADS_CHANNEL_ID); + + const message = `Synced skins to archive.org. Success: ${action.successes.toLocaleString()} Errors: ${action.errors.toLocaleString()}.`; + + await dest.send(message); + break; + } + + case "STARTED_SYNC_TO_ARCHIVE": { + const dest = await this.getChannel(Config.SKIN_UPLOADS_CHANNEL_ID); + + const message = `Starting sync to archive.org. Found ${action.count.toLocaleString()} to sync.`; + + await dest.send(message); + break; + } } } diff --git a/packages/skin-database/api/app.ts b/packages/skin-database/api/app.ts index e0f83bc4..c26a310f 100644 --- a/packages/skin-database/api/app.ts +++ b/packages/skin-database/api/app.ts @@ -20,7 +20,9 @@ export type ApiAction = | { type: "CLASSIC_SKIN_UPLOADED"; md5: string } | { type: "MODERN_SKIN_UPLOADED"; md5: string } | { type: "SKIN_UPLOAD_ERROR"; uploadId: string; message: string } - | { type: "GOT_FEEDBACK"; message: string; email?: string, url?: string }; + | { type: "GOT_FEEDBACK"; message: string; email?: string; url?: string } + | { type: "SYNCED_TO_ARCHIVE"; successes: number; errors: number } + | { type: "STARTED_SYNC_TO_ARCHIVE"; count: number }; export type EventHandler = (event: ApiAction) => void; export type Logger = { diff --git a/packages/skin-database/cli.ts b/packages/skin-database/cli.ts index 23c44742..33d391d8 100755 --- a/packages/skin-database/cli.ts +++ b/packages/skin-database/cli.ts @@ -37,7 +37,7 @@ async function main() { await syncFromArchive(); break; case "sync-ia": - await syncWithArchive(); + await syncWithArchive(handler); break; case "integity-check": await integrityCheck(); diff --git a/packages/skin-database/tasks/syncWithArchive.ts b/packages/skin-database/tasks/syncWithArchive.ts index 8f73be6f..c8aa8592 100644 --- a/packages/skin-database/tasks/syncWithArchive.ts +++ b/packages/skin-database/tasks/syncWithArchive.ts @@ -9,6 +9,7 @@ import SkinModel from "../data/SkinModel"; import util from "util"; import * as Parallel from "async-parallel"; import IaItemModel from "../data/IaItemModel"; +import DiscordEventHandler from "../api/DiscordEventHandler"; const exec = util.promisify(child_process.exec); const CONCURRENT = 1; @@ -105,7 +106,7 @@ export async function archive(skin: SkinModel): Promise { return identifier; } -export async function syncWithArchive() { +export async function syncWithArchive(handler: DiscordEventHandler) { const ctx = new UserContext(); console.log("Checking which new skins we have..."); const unarchived = await knex("skins") @@ -113,7 +114,7 @@ export async function syncWithArchive() { .where({ "ia_items.id": null, skin_type: 1 }) .select("skins.md5"); - console.log(`Found ${unarchived.length} skins to upload`); + handler.handle({ type: "STARTED_SYNC_TO_ARCHIVE", count: unarchived.length }); let successCount = 0; let errorCount = 0; @@ -150,6 +151,11 @@ export async function syncWithArchive() { }, CONCURRENT ); + await handler.handle({ + type: "SYNCED_TO_ARCHIVE", + successes: successCount, + errors: errorCount, + }); console.log(`Job complete: ${successCount} success, ${errorCount} errors`); } // Build the URL to get all wsz files