import { Router, Request, Response } from 'express';
import {
  getRegistry,
  getSupportedVersions,
  getLatestVersion,
  refreshRegistry,
} from '../services/versionRegistry';

const router = Router();

router.get('/', (_req: Request, res: Response) => {
  const registry = getRegistry();
  res.json({
    versions: registry.versions.map((v) => ({
      version: v.version,
      releaseDate: v.releaseDate,
      useContainers: v.useContainers,
      notes: v.notes,
      features: v.features,
    })),
    latestVersion: registry.latestVersion,
    lastUpdated: registry.lastUpdated,
    source: registry.source,
  });
});

router.post('/refresh', async (_req: Request, res: Response): Promise<void> => {
  try {
    const result = await refreshRegistry();
    res.json({
      updated: result.updated,
      changes: result.changes,
      latestVersion: result.registry.latestVersion,
      versions: result.registry.versions.map((v) => v.version),
      lastUpdated: result.registry.lastUpdated,
      source: result.registry.source,
    });
  } catch (err) {
    const message = err instanceof Error ? err.message : 'Unknown error';
    res.status(500).json({ error: `Version refresh failed: ${message}` });
  }
});

export default router;
