Interface_0_2.cpp (2504B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 #include "pch.h" 4 #include "Interface.h" 5 #include "QueueTable.h" 6 #include <winget/SQLiteMetadataTable.h> 7 8 using namespace AppInstaller::SQLite; 9 using namespace AppInstaller::Utility; 10 11 namespace winrt::Microsoft::Management::Configuration::implementation::Database::Schema::V0_2 12 { 13 static constexpr AppInstaller::SQLite::Version s_InterfaceVersion{ 0, 2 }; 14 15 const AppInstaller::SQLite::Version& Interface::GetSchemaVersion() 16 { 17 return s_InterfaceVersion; 18 } 19 20 void Interface::InitializeDatabase() 21 { 22 V0_1::Interface::InitializeDatabase(); 23 24 Savepoint savepoint = Savepoint::Create(*m_storage, "InitializeDatabase_0_2"); 25 MigrateFrom0_1(); 26 savepoint.Commit(); 27 } 28 29 bool Interface::MigrateFrom(IConfigurationDatabase* current) 30 { 31 auto currentSchemaVersion = current->GetSchemaVersion(); 32 if (currentSchemaVersion < s_InterfaceVersion) 33 { 34 if (V0_1::Interface::MigrateFrom(current)) 35 { 36 Savepoint savepoint = Savepoint::Create(*m_storage, "MigrateFrom0_1"); 37 38 MigrateFrom0_1(); 39 s_InterfaceVersion.SetSchemaVersion(*m_storage); 40 41 savepoint.Commit(); 42 43 return true; 44 } 45 } 46 else if (currentSchemaVersion == s_InterfaceVersion) 47 { 48 return true; 49 } 50 51 return false; 52 } 53 54 void Interface::AddQueueItem(const GUID& instanceIdentifier, const std::string& objectName) 55 { 56 QueueTable queueTable(*m_storage); 57 queueTable.AddQueueItemWithoutProcess(instanceIdentifier, objectName); 58 } 59 60 void Interface::SetActiveQueueItem(const std::string& objectName) 61 { 62 QueueTable queueTable(*m_storage); 63 queueTable.SetActiveQueueItem(objectName); 64 } 65 66 std::vector<std::tuple<GUID, std::string, std::chrono::system_clock::time_point, DWORD, bool>> Interface::GetQueueItems() 67 { 68 QueueTable queueTable(*m_storage); 69 return queueTable.GetQueueItemsWithoutProcess(); 70 } 71 72 void Interface::RemoveQueueItem(const std::string& objectName) 73 { 74 QueueTable queueTable(*m_storage); 75 queueTable.RemoveQueueItem(objectName); 76 } 77 78 void Interface::MigrateFrom0_1() 79 { 80 QueueTable queueTable(*m_storage); 81 queueTable.Create(); 82 } 83 }