diff --git a/lib/types/database-identifier-types.js b/lib/types/database-identifier-types.js new file mode 100644 --- /dev/null +++ b/lib/types/database-identifier-types.js @@ -0,0 +1,12 @@ +// @flow + +const databaseIdentifier = Object.freeze({ + // The main database used by the app with all the data. + MAIN: 'main', + // Decrypted database downloaded from backup service. + RESTORED: 'restored', +}); + +export type DatabaseIdentifier = $Values; + +export { databaseIdentifier }; diff --git a/native/cpp/CommonCpp/DatabaseManagers/DatabaseIdentifier.h b/native/cpp/CommonCpp/DatabaseManagers/DatabaseIdentifier.h new file mode 100644 --- /dev/null +++ b/native/cpp/CommonCpp/DatabaseManagers/DatabaseIdentifier.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include + +enum class DatabaseIdentifier { + // The main database used by the app with all the data. + MAIN, + // Decrypted database downloaded from backup service. + RESTORED, +}; + +inline DatabaseIdentifier +stringToDatabaseIdentifier(const std::string &identifier) { + static const std::map identifierMap = { + {"main", DatabaseIdentifier::MAIN}, + {"restored", DatabaseIdentifier::RESTORED}, + }; + + auto it = identifierMap.find(identifier); + if (it != identifierMap.end()) { + return it->second; + } else { + throw std::invalid_argument("Invalid database identifier"); + } +}