Subscription.java

package com.wavii.model.enums;

/**
 * Enum que define los planes de suscripcion disponibles.
 */
public enum Subscription {
    /** Plan gratuito con funcionalidades limitadas */
    FREE,
    /** Plan de pago con acceso completo a tablaturas y desafios */
    PLUS,
    /** Plan educativo para instituciones y escuelas */
    SCHOLAR;

    public static Subscription fromDatabaseValue(String value) {
        if (value == null || value.isBlank()) {
            return FREE;
        }

        if ("EDUCATION".equalsIgnoreCase(value) || "SCHOLAR".equalsIgnoreCase(value)) {
            return SCHOLAR;
        }

        return Subscription.valueOf(value.toUpperCase());
    }

    public String toDatabaseValue() {
        return this == SCHOLAR ? "EDUCATION" : name();
    }

    public String toPublicId() {
        return this == SCHOLAR ? "education" : name().toLowerCase();
    }
}