package com.hw.mqtt.enums;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * @author WenJY
 * @date 2023年03月14日 13:36
 */
@Getter
@RequiredArgsConstructor
public enum RedisKeys {

    /**
     * mqtt 服务端节点
     */
    SERVER_NODES("mqtt:server:nodes:"),
    /**
     * mqtt <-> redis pug/sub 集群内消息交互
     */
    REDIS_CHANNEL_EXCHANGE("mqtt:channel:exchange"),
    /**
     * 设备 -> 云端 redis pug/sub 上行消息通道，适合 mq 的集群模式消费
     */
    REDIS_CHANNEL_UP("mqtt:channel:up"),
    /**
     * 云端 -> 设备 redis pug/sub 下行数据通道，广播到 mqtt 集群
     */
    REDIS_CHANNEL_DOWN("mqtt:channel:down"),
    /**
     * 连接状态存储
     */
    CONNECT_STATUS("mqtt:connect:status:"),
    /**
     * 遗嘱消息存储
     */
    MESSAGE_STORE_WILL("mqtt:messages:will:"),
    /**
     * 保留消息存储
     */
    MESSAGE_STORE_RETAIN("mqtt:messages:retain:"),

    /**
     * 设备信息
     */
    CLIENT_DEVICE_INFO("hw_device_info"),
    ;


    private final String key;

    /**
     * 用于拼接后缀
     *
     * @param suffix 后缀
     * @return 完整的 redis key
     */
    public String getKey(String suffix) {
        return this.key.concat(suffix);
    }

}

