mirror of
https://github.com/silverqx/TinyORM.git
synced 2026-01-06 02:49:31 -06:00
shared_ptr for DatabaseManager factory methods
Refactored from an unique_ptr to shared_ptr, I think this is a better approach. Now it will be clear that a few DatabaseManager pointers are stored somewhere in the TinyORM. - return std:shared_ptr from DatabaseManager factory methods - store a shared_ptr<DatabaseManager> in private data members in DatabaseManager and DB classes
This commit is contained in:
@@ -2,32 +2,28 @@
|
||||
|
||||
#include <QSharedPointer>
|
||||
|
||||
#include "orm/macros/likely.hpp"
|
||||
|
||||
TINYORM_BEGIN_COMMON_NAMESPACE
|
||||
|
||||
namespace Orm
|
||||
{
|
||||
|
||||
DatabaseManager &DB::manager()
|
||||
{
|
||||
if (m_manager == nullptr)
|
||||
m_manager = DatabaseManager::instance();
|
||||
std::shared_ptr<DatabaseManager> DB::m_manager;
|
||||
|
||||
return *m_manager;
|
||||
}
|
||||
|
||||
std::unique_ptr<DatabaseManager>
|
||||
std::shared_ptr<DatabaseManager>
|
||||
DB::create(const QString &defaultConnection)
|
||||
{
|
||||
return DatabaseManager::create(defaultConnection);
|
||||
}
|
||||
|
||||
std::unique_ptr<DatabaseManager>
|
||||
std::shared_ptr<DatabaseManager>
|
||||
DB::create(const QVariantHash &config, const QString &connection)
|
||||
{
|
||||
return DatabaseManager::create(config, connection);
|
||||
}
|
||||
|
||||
std::unique_ptr<DatabaseManager>
|
||||
std::shared_ptr<DatabaseManager>
|
||||
DB::create(const ConfigurationsType &configs, const QString &defaultConnection)
|
||||
{
|
||||
return DatabaseManager::create(configs, defaultConnection);
|
||||
@@ -461,6 +457,15 @@ void DB::forgetRecordModificationState(const QString &connection)
|
||||
manager().connection(connection).forgetRecordModificationState();
|
||||
}
|
||||
|
||||
DatabaseManager &DB::manager()
|
||||
{
|
||||
if (m_manager) T_LIKELY
|
||||
return *m_manager;
|
||||
|
||||
else T_UNLIKELY
|
||||
return *(m_manager = DatabaseManager::instance());
|
||||
}
|
||||
|
||||
} // namespace Orm
|
||||
|
||||
TINYORM_END_COMMON_NAMESPACE
|
||||
|
||||
Reference in New Issue
Block a user