OneConversorTemplate/OnlyOneAccessTemplate/Services/ConfigurationService.cs
Ricardo Carneiro 03e6c74ada feat: ratelimit
2025-06-05 11:52:03 -03:00

46 lines
1.6 KiB
C#

using Microsoft.Extensions.Caching.Memory;
using MongoDB.Driver;
using OnlyOneAccessTemplate.Models;
namespace OnlyOneAccessTemplate.Services
{
public class ConfigurationService : IConfigurationService
{
private readonly IMongoDatabase _database;
private readonly IMemoryCache _cache;
public ConfigurationService(IMongoDatabase database, IMemoryCache cache)
{
_database = database;
_cache = cache;
}
public async Task<SiteConfiguration> GetConfigurationAsync(string domain)
{
var cacheKey = $"config_{domain}";
if (_cache.TryGetValue(cacheKey, out SiteConfiguration cachedConfig))
return cachedConfig;
var collection = _database.GetCollection<SiteConfiguration>("SiteConfigurations");
var config = await collection.Find(x => x.Domain == domain).FirstOrDefaultAsync();
if (config != null)
_cache.Set(cacheKey, config, TimeSpan.FromMinutes(30));
return config;
}
public async Task<List<ConverterConfig>> GetConvertersAsync(string language)
{
var collection = _database.GetCollection<ConverterConfig>("Converters");
return await collection.Find(x => x.IsActive).ToListAsync();
}
public async Task<ConverterConfig> GetConverterAsync(string id, string language)
{
var collection = _database.GetCollection<ConverterConfig>("Converters");
return await collection.Find(x => x.Id == id && x.IsActive).FirstOrDefaultAsync();
}
}
}