import { handle } from '@astrojs/cloudflare/handler';
import { dispatchQueue } from '@/server/platform/queue-registry';
import { ensureScheduler } from '@/server/do-host/lifecycle/scheduler';

export { DealDO } from '@/server/do-host/do/DealDO';
export { GroupDealDO } from '@/server/do-host/do/GroupDealDO';
export { PersonalOfferDO } from '@/server/do-host/do/PersonalOfferDO';
export { ScheduledPublishDO } from '@/server/do-host/do/ScheduledPublishDO';
export { GoldWindowDO } from '@/server/do-host/do/GoldWindowDO';
export { StripeReconcileDO } from '@/server/do-host/do/StripeReconcileDO';
export { SupportTicketDO } from '@/server/do-host/do/SupportTicketDO';
export { SupportCaseDO } from '@/server/do-host/do/SupportCaseDO';
export { UserSessionDO } from '@/server/do-host/do/UserSessionDO';
export { TopicDO } from '@/server/do-host/do/TopicDO';
export { CacheEpochDO } from '@/server/do-host/do/CacheEpochDO';
export { PasswordHashDO } from '@/server/do-host/do/PasswordHashDO';
export { RenderDO } from '@/server/do-host/do/RenderDO';
export { SchedulerDO } from '@/server/do-host/do/SchedulerDO';

async function scheduled(_event: ScheduledController, env: Env): Promise<void> {
  console.warn('[scheduled] FIRED');
  await ensureScheduler(env as unknown as Parameters<typeof ensureScheduler>[0]);
}

export default {
  fetch: handle,
  scheduled,
  queue: dispatchQueue,
} satisfies ExportedHandler<Env>;
