package fr.luc.gamingcore.manager;

/**
 * Objet de résultat immuable retourné par les méthodes métier du GuildManager.
 */
public final class GuildResult {

    private final boolean success;
    private final String message;

    private GuildResult(boolean success, String message) {
        this.success = success;
        this.message = message != null ? message : "";
    }

    /**
     * Crée un résultat de succès avec un message optionnel.
     *
     * @param message Message d'information ou de confirmation.
     * @return GuildResult avec success = true.
     */
    public static GuildResult success(String message) {
        return new GuildResult(true, message);
    }

    /**
     * Crée un résultat d'échec avec un message explicatif.
     *
     * @param errorMessage Raison de l'échec de l'action.
     * @return GuildResult avec success = false.
     */
    public static GuildResult failure(String errorMessage) {
        return new GuildResult(false, errorMessage);
    }

    /**
     * Indique si l'opération a réussi.
     *
     * @return true en cas de succès, false en cas d'échec.
     */
    public boolean isSuccess() {
        return success;
    }

    /**
     * Obtient le message descriptif du résultat.
     *
     * @return Le message formatté.
     */
    public String getMessage() {
        return message;
    }
}
