Initial commit

This commit is contained in:
2026-07-03 16:37:12 +07:00
commit 63b8c1ea8b
1931 changed files with 640587 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
using RobotNet10.CustomConfiguration.Helpers;
using RobotNet10.CustomConfiguration.Models;
using System.IO;
using System.Text.Json;
namespace RobotNet10.CustomConfiguration.Services;
/// <summary>
/// Helper methods cho quản lý metadata (load từ config files)
/// </summary>
public partial class ConfigService
{
/// <summary>
/// Load tất cả config files và trả về metadata
/// </summary>
private async Task<List<ConfigFileMetadata>> LoadAllMetadataAsync()
{
var metadataList = new List<ConfigFileMetadata>();
try
{
// List all files in configs directory
var files = await _storageManager.ListAsync(ConfigPath, recursive: false, CancellationToken.None);
// Filter only .config.json files
var configFiles = files.Where(f => f.EndsWith(ConfigFileExtension, StringComparison.OrdinalIgnoreCase)).ToList();
foreach (var fileName in configFiles)
{
try
{
// Extract configType from filename: {configType}.config.json
var configType = fileName.Replace(ConfigFileExtension, "", StringComparison.OrdinalIgnoreCase);
// Load config file to get metadata
var config = await LoadConfigFileAsync(configType);
if (config != null)
{
metadataList.Add(new ConfigFileMetadata
{
Id = config.Id,
ConfigType = config.ConfigType,
CreatedAt = config.CreatedAt,
UpdatedAt = config.UpdatedAt,
Description = config.Description
});
}
}
catch (JsonException)
{
// Skip corrupted config files
continue;
}
}
}
catch (Exception ex) when (ex is IOException or UnauthorizedAccessException)
{
// Storage unavailable - return what we have so far
return metadataList;
}
return metadataList;
}
/// <summary>
/// Get metadata by ConfigType (load từ config file)
/// </summary>
private async Task<ConfigFileMetadata?> GetMetadataByTypeAsync(string configType)
{
var config = await LoadConfigFileAsync(configType);
if (config == null)
{
return null;
}
return new ConfigFileMetadata
{
Id = config.Id,
ConfigType = config.ConfigType,
CreatedAt = config.CreatedAt,
UpdatedAt = config.UpdatedAt,
Description = config.Description
};
}
}