/**
 * Scheduled publish lifecycle — single page publish logic.
 *
 * Called by ScheduledPublishDO.alarm().
 * Each DO instance is keyed by page slug (idFromName(page)).
 * Mirrors runScheduledPublish logic for a single page.
 */

import type { DoDbClient } from '../lib/db.js';
import { publishScheduledPageRow } from '@/server/db/queries/do-lifecycle.js';

export interface ScheduledPublishDeps {
  db: DoDbClient;
}

/**
 * Flip the live version for a single page if scheduledAt <= now.
 * Clears scheduledVersionId and scheduledAt after flip.
 *
 * The DO id is set via idFromName(page) so `page` IS the id string.
 */
export async function publishScheduledPage(
  deps: ScheduledPublishDeps,
  page: string,
): Promise<void> {
  const row = await publishScheduledPageRow(deps.db, page, new Date());
  if (!row) {
    // Already published or cleared — no-op
    return;
  }
}
