import { Controller, Post, Body, Res } from '@nestjs/common';
import type { Response } from 'express';
import { AiService, ChatMessageDto } from './ai.service';

export class ChatRequestDto {
  messages: ChatMessageDto[];
  model?: string;
}

@Controller('ai')
export class AiController {
  constructor(private readonly aiService: AiService) {}

  @Post('chat')
  async chat(@Body() body: ChatRequestDto) {
    const model = body.model || 'openai/gpt-oss-20b:free';
    const result = await this.aiService.chat(body.messages, model);
    return {
      success: true,
      text: result.text,
      reasoningTokens: result.reasoningTokens,
    };
  }

  @Post('stream')
  async streamChat(@Body() body: ChatRequestDto, @Res() res: Response) {
    const model = body.model || 'openai/gpt-oss-20b:free';
    return this.aiService.streamChat(body.messages, res, model);
  }
}
