using AutoMapper; using Edge.Core.Database; using Dfs.WayneChina.FairbanksRTData.UniversalApiModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Dfs.WayneChina.FairbanksRTData { public class DbHelper { public IServiceProvider Services { get; } private IMapper objMapper; private readonly SqliteDbContext dbContext; public ILogger Logger { get; } = NullLogger.Instance; public DbHelper(IServiceProvider services) { Services = services; var loggerFactory = services.GetRequiredService(); Logger = loggerFactory.CreateLogger("Fairbanks"); objMapper = Services.GetRequiredService(); dbContext = services.GetRequiredService(); } public async Task> GetLatestUploadHistoryAsync(DateTime startTime) { var sets = dbContext.GenericDatas.AsEnumerable() .Where(e => e.Type == AutoMapperProfile.AppDataType && e.Owner == AutoMapperProfile.AppDataOwner && objMapper.Map(e).TimeStamp >= startTime); return await Task.FromResult(objMapper.Map>(sets) .OrderByDescending(r => r.TimeStamp) .ToList()); } public bool RecordUploadTried(string fileName) { var sets = dbContext.GenericDatas.AsEnumerable() .Where(e => e.Type == AutoMapperProfile.AppDataType && e.Owner == AutoMapperProfile.AppDataOwner && objMapper.Map(e).FileName == fileName); if (objMapper.Map>(sets)?.Count() >= 1) return true; return false; } } }