import { Body, Controller, Post } from '@nestjs/common';
import { IsNotEmpty, IsObject, IsOptional, IsString, MaxLength } from 'class-validator';
import { AnonymousSessionsService } from './anonymous-sessions.service';

export class RegisterSessionDto {
  @IsString()
  @IsNotEmpty()
  @MaxLength(255)
  deviceId!: string;

  @IsOptional()
  @IsObject()
  metadata?: Record<string, any>;
}

@Controller('api/v1/sessions')
export class AnonymousSessionsController {
  constructor(private readonly service: AnonymousSessionsService) {}

  /** Called on every app start; creates the session on first use. */
  @Post('register')
  async register(@Body() dto: RegisterSessionDto) {
    const session = await this.service.register(dto.deviceId, dto.metadata);
    return {
      success: true,
      message: 'Success',
      data: { deviceId: session.deviceId, createdAt: session.createdAt },
    };
  }
}
