DataBaseCleaner.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. namespace MinicsConsole.Helper;
  2. public class DataBaseCleaner(BasicInfo basicInfo, OrmCollections ormCollections, Hardwares hardwares, ILog log)
  3. {
  4. public bool CleanDB()
  5. {
  6. if (ormCollections.MainORM is null)
  7. return false;
  8. DateTime clearSince = DateTime.Now.AddDays(basicInfo.DBKeepRange * (-1));
  9. foreach (KeyValuePair<byte, ConcurrentDictionary<byte, ChannelData>> mini8_channel in hardwares.Mini8Channels)
  10. {
  11. byte mini8Index = mini8_channel.Key;
  12. try
  13. {
  14. if (!ormCollections.MainORM.Delete<DBWarning>($"Error-Mini8-{mini8Index}", dbData => dbData.DateTime < clearSince))
  15. log.Warning($"DB Clean before {clearSince:yyyy-MM-dd HH:mm:ss} - Warning History Mini8{mini8Index}");
  16. log.Info($"DB Clean before {clearSince:yyyy-MM-dd HH:mm:ss} - Warning History Mini8{mini8Index}");
  17. }
  18. catch
  19. {
  20. log.Warning($"DB Clean before {clearSince:yyyy-MM-dd HH:mm:ss}- Warning History Mini8{mini8Index}");
  21. }
  22. foreach (KeyValuePair<byte, ChannelData> channel in mini8_channel.Value)
  23. {
  24. try
  25. {
  26. if (!ormCollections.MainORM.Delete<DBFormat>($"Mini8-{mini8Index}-{channel.Key}", dbData => dbData.DateTime < clearSince))
  27. log.Warning($"DB Clean - Mini8 History Mini8{mini8Index}-{channel.Key}");
  28. log.Info($"DB Clean before {clearSince:yyyy-MM-dd HH:mm:ss} - Mini8 History Mini8{mini8Index}-{channel.Key}");
  29. }
  30. catch
  31. {
  32. log.Warning($"DB Clean before {clearSince:yyyy-MM-dd HH:mm:ss} - Mini8 History Mini8{mini8Index}-{channel.Key}");
  33. }
  34. }
  35. }
  36. basicInfo.DBClearTime = DateTime.Now;
  37. BaseConfigFileLoader.Save(basicInfo);
  38. return true;
  39. }
  40. }