Files
BQP/srcs/RobotNet10/Commons/RobotNet10.CustomConfiguration/Services/IConfigManager.cs
2026-07-13 09:25:40 +07:00

103 lines
3.7 KiB
C#

using RobotNet10.CustomConfiguration.Events;
using RobotNet10.CustomConfiguration.Models;
namespace RobotNet10.CustomConfiguration.Services;
/// <summary>
/// Service interface cho quản lý và truy vấn configuration variables
/// </summary>
public interface IConfigManager
{
// ==========================================
// EVENTS
// ==========================================
/// <summary>
/// Event được trigger khi có thay đổi trong config (tạo mới, cập nhật, xóa, hoặc thay đổi variables)
/// </summary>
event EventHandler<ConfigChangedEventArgs>? ConfigChanged;
// ==========================================
// CONFIG TYPE OPERATIONS
// ==========================================
/// <summary>
/// Lấy config theo ConfigType (đầy đủ thông tin bao gồm variables)
/// </summary>
Task<ConfigFile?> GetConfigByTypeAsync(string configType);
/// <summary>
/// Kiểm tra ConfigType có tồn tại không
/// </summary>
Task<bool> ConfigTypeExistsAsync(string configType);
// ==========================================
// VARIABLE EXISTENCE CHECK
// ==========================================
/// <summary>
/// Kiểm tra variable có tồn tại không (theo ConfigType)
/// </summary>
Task<bool> VariableExistsAsync(string configType, string variableName);
/// <summary>
/// Kiểm tra variable có tồn tại không (theo ConfigId)
/// </summary>
Task<bool> VariableExistsAsync(Guid configId, string variableName);
// ==========================================
// GET VARIABLE VALUE
// ==========================================
/// <summary>
/// Lấy giá trị (Value) của variable (theo ConfigType)
/// </summary>
Task<object?> GetVariableValueAsync(string configType, string variableName);
/// <summary>
/// Lấy giá trị (Value) của variable (theo ConfigId)
/// </summary>
Task<object?> GetVariableValueAsync(Guid configId, string variableName);
// ==========================================
// GET VARIABLE(S)
// ==========================================
/// <summary>
/// Lấy một variable cụ thể (theo ConfigType)
/// </summary>
Task<ConfigVariable?> GetVariableAsync(string configType, string variableName);
/// <summary>
/// Lấy tất cả variables của một ConfigType
/// </summary>
Task<List<ConfigVariable>> GetVariablesAsync(string configType);
/// <summary>
/// Lấy một variable cụ thể (theo ConfigId)
/// </summary>
Task<ConfigVariable?> GetVariableAsync(Guid configId, string variableName);
/// <summary>
/// Lấy tất cả variables của một ConfigId
/// </summary>
Task<List<ConfigVariable>> GetVariablesAsync(Guid configId);
// ==========================================
// GET VARIABLE TYPE
// ==========================================
/// <summary>
/// Lấy kiểu dữ liệu của variable dưới dạng string (theo ConfigType)
/// Trả về: "string", "int", "double", "bool", "object", "array", "enum"
/// </summary>
Task<string?> GetVariableTypeAsync(string configType, string variableName);
/// <summary>
/// Lấy kiểu dữ liệu của variable dưới dạng string (theo ConfigId)
/// Trả về: "string", "int", "double", "bool", "object", "array", "enum"
/// </summary>
Task<string?> GetVariableTypeAsync(Guid configId, string variableName);
}