Initial commit
This commit is contained in:
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user