package com.njcn.rdms.module.system.enums.permission;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 内置对象角色清单。
 *
 * 业务代码按 code 查 system_role 拿 role_id（创建者自动落地、关心人、隐式 observer 兜底等都用）；
 * 启动时按本枚举校验 system_role 必须存在；这些 code 同时已加入 {@link RoleCodeEnum#isBuiltIn(String)} 锁住改 code / 删除。
 *
 * 不含 product_manager / project_manager / visitor —— 已分别定义在
 * ProductObjectConstants / ProjectObjectConstants，避免重复维护 code 字面量。
 *
 * code / name 直接引用 {@link RoleCodeEnum}，两处只有一份字符串。
 */
@Getter
@AllArgsConstructor
public enum ObjectRoleConstants {

    PRODUCT_CREATOR(RoleCodeEnum.PRODUCT_CREATOR, "product"),
    PRODUCT_WATCHER(RoleCodeEnum.PRODUCT_WATCHER, "product"),
    IMPLICIT_OBSERVER_PRODUCT(RoleCodeEnum.IMPLICIT_OBSERVER_PRODUCT, "product"),

    PROJECT_CREATOR(RoleCodeEnum.PROJECT_CREATOR, "project"),
    PROJECT_WATCHER(RoleCodeEnum.PROJECT_WATCHER, "project"),
    IMPLICIT_OBSERVER_PROJECT(RoleCodeEnum.IMPLICIT_OBSERVER_PROJECT, "project");

    private final RoleCodeEnum roleCode;
    private final String objectType;

    public String getCode() {
        return roleCode.getCode();
    }

    public String getName() {
        return roleCode.getName();
    }

}
