package dev.lions.user.manager.client.service;

import dev.lions.user.manager.api.SyncResourceApi;
import dev.lions.user.manager.client.filter.AuthHeaderFactory;
import dev.lions.user.manager.dto.sync.HealthStatusDTO;
import jakarta.ws.rs.*;
import org.eclipse.microprofile.rest.client.annotation.RegisterClientHeaders;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

/**
 * REST Client pour le service de synchronisation
 * Utilise l'interface commune définie dans server-api pour garantir la
 * cohérence du contrat.
 */
@RegisterRestClient(configKey = "lions-user-manager-api")
@RegisterClientHeaders(AuthHeaderFactory.class)
public interface SyncServiceClient extends SyncResourceApi {

    // Méthodes supplémentaires spécifiques au client (ou pas encore migrées dans
    // l'API commune)

    @GET
    @Path("/health")
    HealthStatusDTO checkHealth(@QueryParam("realm") String realmName);

    @GET
    @Path("/exists/user/{username}")
    Boolean userExists(
            @PathParam("username") String username,
            @QueryParam("realm") String realmName);

    @GET
    @Path("/exists/role/{roleName}")
    Boolean roleExists(
            @PathParam("roleName") String roleName,
            @QueryParam("realm") String realmName,
            @QueryParam("typeRole") String typeRole,
            @QueryParam("clientName") String clientName);
}
