mirror of
https://github.com/saltbo/zpan.git
synced 2026-08-29 00:01:42 +08:00
29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
// CF Workers scheduled() handler.
|
|
|
|
import { createCloudflarePlatform } from '../server/platform/cloudflare'
|
|
import { syncPendingCloudTrafficReports } from '../server/services/cloud-traffic-metering'
|
|
import { runLicensingRefresh } from '../server/services/licensing-refresh-runner'
|
|
import { ZPAN_CLOUD_URL_DEFAULT } from '../shared/constants'
|
|
|
|
// Subset of the worker Env used by the scheduled handler.
|
|
// The full Env is defined in bootstrap.ts; this avoids circular imports.
|
|
export interface ScheduledEnv {
|
|
DB: D1Database
|
|
ZPAN_CLOUD_URL?: string
|
|
[key: string]: unknown
|
|
}
|
|
|
|
const TRAFFIC_SYNC_CRON = '*/10 * * * *'
|
|
type ScheduledTrigger = Pick<ScheduledEvent, 'cron'>
|
|
|
|
export async function handleScheduled(event: ScheduledTrigger, env: ScheduledEnv): Promise<void> {
|
|
const platform = createCloudflarePlatform(env)
|
|
const cloudBaseUrl = env.ZPAN_CLOUD_URL ?? ZPAN_CLOUD_URL_DEFAULT
|
|
if (event.cron === TRAFFIC_SYNC_CRON) {
|
|
await syncPendingCloudTrafficReports({ db: platform.db, cloudBaseUrl })
|
|
return
|
|
}
|
|
|
|
await runLicensingRefresh(platform.db, cloudBaseUrl)
|
|
}
|