package com.lesingle.edu.common.enums;

import lombok.Getter;

/**
 * 日志操作类型枚举
 * <p>
 * 用于 @Log 注解的 type 参数赋值
 * </p>
 *
 * @author reading-platform
 * @since 2026-03-23
 */
@Getter
public enum LogOperationType {

    /**
     * 新增
     */
    CREATE("CREATE", "新增"),

    /**
     * 修改
     */
    UPDATE("UPDATE", "修改"),

    /**
     * 删除
     */
    DELETE("DELETE", "删除"),

    /**
     * 查询
     */
    QUERY("QUERY", "查询"),

    /**
     * 导出
     */
    EXPORT("EXPORT", "导出"),

    /**
     * 导入
     */
    IMPORT("IMPORT", "导入"),

    /**
     * 其他
     */
    OTHER("OTHER", "其他");

    private final String code;
    private final String description;

    LogOperationType(String code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 根据 code 获取枚举
     *
     * @param code 操作类型码
     * @return 日志操作类型枚举
     */
    public static LogOperationType fromCode(String code) {
        for (LogOperationType type : values()) {
            if (type.code.equals(code)) {
                return type;
            }
        }
        return OTHER;
    }
}
