-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathDatabaseComponent.hpp
37 lines (24 loc) · 1.16 KB
/
DatabaseComponent.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef EXAMPLE_POSTGRESQL_DATABASECOMPONENT_HPP
#define EXAMPLE_POSTGRESQL_DATABASECOMPONENT_HPP
#include "db/UserDb.hpp"
#include "dto/ConfigDto.hpp"
class DatabaseComponent {
public:
/**
* Create database client
*/
OATPP_CREATE_COMPONENT(std::shared_ptr<UserDb>, userDb)([] {
OATPP_COMPONENT(oatpp::Object<ConfigDto>, config); // Get config component
/* Create database-specific ConnectionProvider */
auto connectionProvider = std::make_shared<oatpp::postgresql::ConnectionProvider>(config->dbConnectionString);
/* Create database-specific ConnectionPool */
auto connectionPool = oatpp::postgresql::ConnectionPool::createShared(connectionProvider,
10 /* max-connections */,
std::chrono::seconds(5) /* connection TTL */);
/* Create database-specific Executor */
auto executor = std::make_shared<oatpp::postgresql::Executor>(connectionPool);
/* Create MyClient database client */
return std::make_shared<UserDb>(executor);
}());
};
#endif //EXAMPLE_POSTGRESQL_DATABASECOMPONENT_HPP