DbHelper.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using AutoMapper;
  2. using Edge.Core.Database;
  3. using Dfs.WayneChina.FairbanksRTData.UniversalApiModels;
  4. using Microsoft.EntityFrameworkCore;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using Microsoft.Extensions.Logging;
  7. using Microsoft.Extensions.Logging.Abstractions;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace Dfs.WayneChina.FairbanksRTData
  14. {
  15. public class DbHelper
  16. {
  17. public IServiceProvider Services { get; }
  18. private IMapper objMapper;
  19. private readonly SqliteDbContext dbContext;
  20. public ILogger Logger { get; } = NullLogger.Instance;
  21. public DbHelper(IServiceProvider services)
  22. {
  23. Services = services;
  24. var loggerFactory = services.GetRequiredService<ILoggerFactory>();
  25. Logger = loggerFactory.CreateLogger("Fairbanks");
  26. objMapper = Services.GetRequiredService<IMapper>();
  27. dbContext = services.GetRequiredService<SqliteDbContext>();
  28. }
  29. public async Task<List<UploadRecord>> GetLatestUploadHistoryAsync(DateTime startTime)
  30. {
  31. var sets = dbContext.GenericDatas.AsEnumerable()
  32. .Where(e => e.Type == AutoMapperProfile.AppDataType
  33. && e.Owner == AutoMapperProfile.AppDataOwner
  34. && objMapper.Map<UploadRecord>(e).TimeStamp >= startTime);
  35. return await Task.FromResult(objMapper.Map<IEnumerable<UploadRecord>>(sets)
  36. .OrderByDescending(r => r.TimeStamp)
  37. .ToList());
  38. }
  39. public bool RecordUploadTried(string fileName)
  40. {
  41. var sets = dbContext.GenericDatas.AsEnumerable()
  42. .Where(e => e.Type == AutoMapperProfile.AppDataType
  43. && e.Owner == AutoMapperProfile.AppDataOwner
  44. && objMapper.Map<UploadRecord>(e).FileName == fileName);
  45. if (objMapper.Map<IEnumerable<UploadRecord>>(sets)?.Count() >= 1)
  46. return true;
  47. return false;
  48. }
  49. }
  50. }