ChatExpConfigLoader.cs 855 B

1234567891011121314151617181920212223
  1. using Application.Abstractions.Cache;
  2. using Application.Abstractions.Data;
  3. using Domain.Entities.Common;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace Application.Helpers;
  6. /// <summary>
  7. /// Config 엔티티 내 ChatExp 그룹 로더. Redis 캐시 → MSSQL 폴백.
  8. /// 관리자 수정 시 CacheKeys.Config 를 무효화하면 자동 갱신됨.
  9. /// </summary>
  10. public static class ChatExpConfigLoader
  11. {
  12. public static async Task<ChatExpConfig> GetAsync(ICacheService cache, IAppDbContext db, CancellationToken ct)
  13. {
  14. // 현재 Config 캐시는 AccountConfig 중심이라 여기서는 DB 폴백 우선 (필요 시 추후 캐시 계층 공유).
  15. var entity = await db.Config.AsNoTracking()
  16. .OrderByDescending(x => x.ID)
  17. .FirstOrDefaultAsync(ct);
  18. return entity?.ChatExp ?? new ChatExpConfig();
  19. }
  20. }