Something went wrong. Try again.
Schedule posts and reposts to Bluesky (and other PDSes) with Cloudflare workers. skyscheduler.work
scheduling social-media cloudflare bsky service cloudflare-workers bsky-tool bluesky
Something went wrong. Try again.
1.6 kB · 52 lines
TSX
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import { Hono } from "hono";import { authAdminOnlyMiddleware } from "../middleware/adminOnly";import { sessionMiddleware } from "../middleware/session";import type { HonoBase } from "../types";import { getAllAbandonedMedia } from "../utils/db/file";import { runMaintenanceUpdates, updateSetDIDForAllUsers } from "../utils/db/maintain";import { cleanupAbandonedFiles, cleanUpPostsTask, schedulePostTask } from "../utils/scheduler";
export const admin = new Hono<HonoBase>();admin.use(sessionMiddleware);admin.use(authAdminOnlyMiddleware);
// Admin Maintenance Cleanupadmin.get("/cron", async (c) => { await schedulePostTask(c); return c.text("ran");});
admin.get("/cron-clean", (c) => { c.executionCtx.waitUntil(cleanUpPostsTask(c)); return c.text("ran");});
admin.get("/db-update", (c) => { c.executionCtx.waitUntil(runMaintenanceUpdates(c)); return c.text("ran");});
admin.get("/abandoned", async (c) => { let returnHTML = ""; const abandonedFiles: string[] = await getAllAbandonedMedia(c); // print out all abandoned files for (const file of abandonedFiles) { returnHTML += `${file}\n`; } // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (c.env.R2_SETTINGS.auto_prune) { console.log("pruning abandoned files..."); await cleanupAbandonedFiles(c); }
if (returnHTML.length == 0) { returnHTML = "no files abandoned"; }
return c.text(returnHTML);});
admin.get("/update", async (c) => { const updatedRows = await updateSetDIDForAllUsers(c); return c.text(`Updated ${updatedRows} accounts`);})