using bitforum.Models; namespace bitforum.Repository { public interface IConfigRepository { // Key로 값 조회 public Config? GetByKey(string key); // 모든 값 조회 public Dictionary GetAll(); // 값 추가 public void Add(Config config); // Config 갱신 public void Update(Config config); // Replace 메서드 추가: Key가 존재하면 업데이트, 없으면 추가 public void Replace(Config config); // id로 Config 삭제 public void DeleteByID(int id); // Key로 Config 삭제 public void DeleteByKey(string key); } public class ConfigRepository: IConfigRepository { private readonly IServiceScopeFactory _scopeFactory; public ConfigRepository(IServiceScopeFactory scopeFactory) { _scopeFactory = scopeFactory; } public Config? GetByKey(string key) { using (var scope = _scopeFactory.CreateScope()) { return scope.ServiceProvider.GetRequiredService().Config.FirstOrDefault(c => c.Key == key); } } public Dictionary GetAll() { using (var scope = _scopeFactory.CreateScope()) { return scope.ServiceProvider.GetRequiredService().Config.ToList().ToDictionary(c => c.Key, c => c.Value); } } public void Add(Config config) { using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService(); _context.Config.Add(config); _context.SaveChanges(); } } public void Update(Config config) { using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService(); _context.Config.Update(config); _context.SaveChanges(); } } public void Replace(Config config) { using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService(); var existingConfig = _context.Config.FirstOrDefault(c => c.Key == config.Key); if (existingConfig != null) { existingConfig.Value = config.Value; existingConfig.Description = config.Description; _context.Config.Update(existingConfig); } else { Add(config); } _context.SaveChanges(); } } public void DeleteByID(int id) { using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService(); var config = _context.Config.Find(id); if (config != null) { _context.Config.Remove(config); _context.SaveChanges(); } } } public void DeleteByKey(string key) { using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService(); var config = _context.Config.FirstOrDefault(c => c.Key == key); if (config != null) { _context.Config.Remove(config); _context.SaveChanges(); } } } } }