package com.usky.rule.vo;

import com.usky.rule.domain.RuleEngine;
import lombok.Data;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;

/**
 * 配置规则：规则主体 + 关联的 CRON 表达式列表 + 关联的设备列表
 */
@Data
public class RuleEngineConfigDTO {
    /** 规则主体（含 id 则为更新，无 id 则为新增） */
    @Valid
    private RuleEngine rule;
    /** 该规则关联的 CRON 表达式列表，可为空 */
    private List<String> cronExprs;
    /** 该规则关联的设备（设备ID+属性标识+产品ID），可为空 */
    private List<RuleEngineDeviceItem> devices;

    public List<String> getCronExprs() {
        return cronExprs != null ? cronExprs : new ArrayList<>();
    }

    public List<RuleEngineDeviceItem> getDevices() {
        return devices != null ? devices : new ArrayList<>();
    }

    @Data
    public static class RuleEngineDeviceItem {
        private String deviceId;
        private String deviceUuid;
        private String identifier;
        private Long productId;
    }
}
