package dev.lions.unionflow.server.api.dto.auth.request;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Builder;

/**
 * Requête d'authentification utilisateur.
 *
 * @param username      Email ou nom d'utilisateur
 * @param password      Mot de passe
 * @param typeCompte    Type de compte (MEMBRE, ADMIN, etc.)
 * @param rememberMe    Se souvenir de moi
 * @author UnionFlow Team
 * @version 2.0
 * @since 2026-02-28
 */
@Builder
public record LoginRequest(
        @NotBlank(message = "L'email ou nom d'utilisateur est requis")
        @Size(min = 3, max = 100, message = "L'email ou nom d'utilisateur doit contenir entre 3 et 100 caractères")
        String username,

        @NotBlank(message = "Le mot de passe est requis")
        @Size(min = 6, message = "Le mot de passe doit contenir au moins 6 caractères")
        String password,

        @NotBlank(message = "Le type de compte est requis")
        String typeCompte,

        Boolean rememberMe) {
}
