Initial work on caching without calling dependencies

This commit is contained in:
Jeff Leung 2024-01-08 09:18:35 -08:00
parent 6e9d58c6e3
commit 2fa8f32f44
1 changed files with 52 additions and 15 deletions

View File

@ -1,26 +1,63 @@
using System.ComponentModel.DataAnnotations;
using AS1024.GeoFeed.Models;
using AS1024.GeoFeed.GeoFeedBuilder;
using Microsoft.EntityFrameworkCore;
using AS1024.GeoFeed.Interfaces;
public class GeoFeedCacheService : IHostedService
namespace AS1024.GeoFeed.GeoFeedCacheService
{
public Task StartAsync(CancellationToken cancellationToken)
public class GeoFeedCacheService : IHostedService
{
throw new NotImplementedException();
CancellationToken _cancellationToken;
private readonly ILogger<GeoFeedCacheService> logger;
private readonly IGeoFeedProvider feedProvider;
public GeoFeedCacheService(ILogger<GeoFeedCacheService> logger,
IGeoFeedProvider feedProvider)
{
this.logger = logger;
this.feedProvider = feedProvider;
}
public Task StartAsync(CancellationToken cancellationToken)
{
_ = StartPerioidicSync();
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
public async Task<bool> StartPerioidicSync(){
List<GeoFeedCacheEntry> geoFeedCacheEntry = [];
while (!_cancellationToken.IsCancellationRequested) {
await Task.Delay(TimeSpan.FromMinutes(30));
logger.LogInformation("Running on disk fallback cache process...");
var results = await feedProvider.GetGeoFeedData();
results.ForEach(x => {
geoFeedCacheEntry.Add(new (){
Prefix = x.Prefix,
GeolocCity = x.GeolocCity,
GeolocCountry = x.GeolocCountry,
GeolocHasLocation = x.GeolocHasLocation,
GeolocPostalCode = x.GeolocPostalCode,
GeolocRegion = x.GeolocRegion
});
});
}
return false;
}
}
public Task StopAsync(CancellationToken cancellationToken)
{
throw new NotImplementedException();
public class GeoFeedCacheEntry : IPGeoFeed {
[Key]
public int Id { get; set; }
}
}
public class GeoFeedCacheEntry : IPGeoFeed {
[Key]
public int Id { get; set; }
}
public class GeoFeedCacheDbContext : DbContext {
public virtual DbSet<GeoFeedCacheEntry> GeoFeedCacheEntries {get;set;}
public class GeoFeedCacheDbContext : DbContext {
public virtual DbSet<GeoFeedCacheEntry> GeoFeedCacheEntries {get;set;}
}
}