SQliteStorageFileInfoDictionary.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using SQLite;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. namespace VidFilesUpgradeTool
  7. {
  8. enum OperatingSystem
  9. {
  10. X86,
  11. X64
  12. }
  13. class SQliteStorageFileInfoDictionary
  14. {
  15. private readonly SQLiteConnection _connection;
  16. private const string IndexFileName = "StorageFileInfos.db";
  17. private readonly string _indexFilePath;
  18. public SQliteStorageFileInfoDictionary(string storageFolder)
  19. {
  20. _indexFilePath = Path.Combine(storageFolder, IndexFileName);
  21. PrepareLibraries(AppDomain.CurrentDomain.BaseDirectory);
  22. _connection = new SQLiteConnection(_indexFilePath);
  23. }
  24. private void PrepareLibraries(string storageFolder)
  25. {
  26. var packageSqliteDir = storageFolder;
  27. var libDest = Path.Combine(packageSqliteDir, "sqlite3.dll");
  28. if (File.Exists(libDest)) return;
  29. var libs = new Dictionary<OperatingSystem, string>
  30. {
  31. {OperatingSystem.X86, Path.Combine(packageSqliteDir, "sqlite3.x86.dll")},
  32. {OperatingSystem.X64, Path.Combine(packageSqliteDir, "sqlite3.x64.dll")}
  33. };
  34. File.Copy(Environment.Is64BitOperatingSystem ? libs[OperatingSystem.X64] : libs[OperatingSystem.X86], libDest);
  35. libs.Values.ToList().ForEach(File.Delete);
  36. }
  37. public StorageFileInfo GetStorageFileInfo(string token)
  38. {
  39. var findResult = _connection.Table<StorageFileInfo>().Where(x => x.Token == token).ToList();
  40. return findResult.FirstOrDefault();
  41. }
  42. public StorageFileInfo GetStorageFileInfoByName(string fileName)
  43. {
  44. var findResult = _connection.Table<StorageFileInfo>().Where(x => x.FileName == fileName).ToList();
  45. return findResult.FirstOrDefault();
  46. }
  47. }
  48. }