package com.fizz.business.service.client;

import lombok.Data;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
 * 每个 WS session 的订阅状态（懒加载用）
 */
@Data
public class DeviceFieldTrendSessionState {

    /**
     * 订阅的 deviceCode 集合；为空代表未订阅任何（不推送）
     */
    private Set<String> deviceCodes = new HashSet<>();

    /**
     * 订阅的 fieldName 集合；为空代表未订阅任何（不推送）
     */
    private Set<String> fieldNames = new HashSet<>();

    /**
     * 是否启用懒加载过滤
     */
    private boolean lazy = true;

    public boolean match(String deviceCode, String fieldName) {
        if (!lazy) return true;
        if (deviceCodes != null && !deviceCodes.isEmpty() && !deviceCodes.contains(deviceCode)) return false;
        if (fieldNames != null && !fieldNames.isEmpty() && !fieldNames.contains(fieldName)) return false;
        return true;
    }

    public static DeviceFieldTrendSessionState emptyLazyOn() {
        DeviceFieldTrendSessionState s = new DeviceFieldTrendSessionState();
        s.setLazy(true);
        s.setDeviceCodes(Collections.emptySet());
        s.setFieldNames(Collections.emptySet());
        return s;
    }
}

