import type { IncomingMessage, ServerResponse } from 'node:http'; import type { ConnectionService } from '../../features/connection/index.js'; interface ServerApplyRouteDependencies { connection: Pick; readBody(req: IncomingMessage): Promise>; withOperation(kind: string, operation: () => Promise): Promise; sendState(res: ServerResponse, extra: { serverId: string; selectedTag: string }): Promise; } export function createServerApplyRoute(dependencies: ServerApplyRouteDependencies) { return { async handle(req: IncomingMessage, res: ServerResponse) { if (req.method !== 'POST' || req.url !== '/api/apply') return false; const { serverId = '', selectedTag = '' } = await dependencies.readBody(req); const result = await dependencies.withOperation( 'apply-server', () => dependencies.connection.apply(serverId, selectedTag), ); await dependencies.sendState(res, result); return true; }, }; }