Files
Portfolio/src/Portfolio.Web/Services/TimelineRepository.cs
Leon Hoppe eeb6e5de6a
Some checks failed
Portfolio CI/CD / build (push) Failing after 17s
Portfolio CI/CD / test (push) Has been skipped
Portfolio CI/CD / publish (push) Has been skipped
Added ordering for timeline entries
2026-02-20 22:43:54 +01:00

24 lines
1.1 KiB
C#

using Portfolio.Shared.Models;
using Portfolio.Shared.Services;
namespace Portfolio.Web.Services;
internal sealed class TimelineRepository(IHttpClientFactory factory) : ITimelineRepository {
public async Task<IEnumerable<TimelineEntry>> GetTimeline(TimelineEntryType type, CancellationToken ct) {
var client = factory.CreateClient("api");
var result = await client.GetAsync($"api/timeline/{type}", ct);
if (!result.IsSuccessStatusCode) return [];
var data = await result.Content.ReadFromJsonAsync<IEnumerable<TimelineEntry>>(ct);
return data?.OrderBy(t => t.Date) ?? Enumerable.Empty<TimelineEntry>();
}
public async Task<IEnumerable<TimelineEntry>> GetFeaturedTimeline(CancellationToken ct) {
var client = factory.CreateClient("api");
var result = await client.GetAsync("api/timeline/featured", ct);
if (!result.IsSuccessStatusCode) return [];
var data = await result.Content.ReadFromJsonAsync<IEnumerable<TimelineEntry>>(ct);
return data?.OrderBy(t => t.Date) ?? Enumerable.Empty<TimelineEntry>();
}
}