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