UnavailableFlashSaleAdmissionStore.java

package com.ecommerce.marketing.infrastructure.flashsale;

import com.ecommerce.marketing.application.port.FlashSaleAdmissionStore;
import com.ecommerce.marketing.application.port.FlashSaleAdmissionStoreException;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;

import java.time.Instant;
import java.util.Optional;

@Component
@ConditionalOnProperty(
        prefix = "ecommerce.marketing.flash-sale",
        name = "redis-enabled",
        havingValue = "false")
public class UnavailableFlashSaleAdmissionStore implements FlashSaleAdmissionStore {

    private static final String MESSAGE = "Flash-sale admission requires Redis";

    @Override
    public void preheat(Activity activity, Instant now) {
        throw new FlashSaleAdmissionStoreException(MESSAGE);
    }

    @Override
    public Decision admit(
            String activityNo,
            Long userId,
            String requestKey,
            String candidateToken,
            Instant now) {
        throw new FlashSaleAdmissionStoreException(MESSAGE);
    }

    @Override
    public Optional<Snapshot> find(String requestToken) {
        throw new FlashSaleAdmissionStoreException(MESSAGE);
    }
}