using SQLite; using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace VidFilesUpgradeTool { enum OperatingSystem { X86, X64 } class SQliteStorageFileInfoDictionary { private readonly SQLiteConnection _connection; private const string IndexFileName = "StorageFileInfos.db"; private readonly string _indexFilePath; public SQliteStorageFileInfoDictionary(string storageFolder) { _indexFilePath = Path.Combine(storageFolder, IndexFileName); PrepareLibraries(AppDomain.CurrentDomain.BaseDirectory); _connection = new SQLiteConnection(_indexFilePath); } private void PrepareLibraries(string storageFolder) { var packageSqliteDir = storageFolder; var libDest = Path.Combine(packageSqliteDir, "sqlite3.dll"); if (File.Exists(libDest)) return; var libs = new Dictionary { {OperatingSystem.X86, Path.Combine(packageSqliteDir, "sqlite3.x86.dll")}, {OperatingSystem.X64, Path.Combine(packageSqliteDir, "sqlite3.x64.dll")} }; File.Copy(Environment.Is64BitOperatingSystem ? libs[OperatingSystem.X64] : libs[OperatingSystem.X86], libDest); libs.Values.ToList().ForEach(File.Delete); } public StorageFileInfo GetStorageFileInfo(string token) { var findResult = _connection.Table().Where(x => x.Token == token).ToList(); return findResult.FirstOrDefault(); } public StorageFileInfo GetStorageFileInfoByName(string fileName) { var findResult = _connection.Table().Where(x => x.FileName == fileName).ToList(); return findResult.FirstOrDefault(); } } }