Files
taxbaik/TaxBaik.Infrastructure/Repositories/SiteSettingRepository.cs
kjh2064 f29f2c3cff
TaxBaik Browser E2E / browser-e2e (push) Failing after 1m3s
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m46s
개선: 배포 검증과 관리자 UX 안정화
2026-06-27 20:57:09 +09:00

31 lines
1.1 KiB
C#

using Dapper;
using TaxBaik.Domain.Entities;
using TaxBaik.Domain.Interfaces;
namespace TaxBaik.Infrastructure.Repositories;
public class SiteSettingRepository(IDbConnectionFactory connectionFactory) : BaseRepository(connectionFactory), ISiteSettingRepository
{
public async Task<IReadOnlyDictionary<string, string>> GetAllAsync(CancellationToken cancellationToken = default)
{
using var conn = Conn();
var rows = await conn.QueryAsync<SiteSetting>(
"SELECT key, value, updated_at AS UpdatedAt FROM site_settings ORDER BY key");
return rows.ToDictionary(x => x.Key, x => x.Value);
}
public async Task UpsertAsync(IEnumerable<SiteSetting> settings, CancellationToken cancellationToken = default)
{
using var conn = Conn();
foreach (var setting in settings)
{
await conn.ExecuteAsync(
@"INSERT INTO site_settings (key, value, updated_at)
VALUES (@Key, @Value, NOW())
ON CONFLICT (key)
DO UPDATE SET value = EXCLUDED.value, updated_at = NOW()",
setting);
}
}
}