lintel
0.2.0
Loading...
Searching...
No Matches
src
include
lintel
core
persistence
Serialization.h
Go to the documentation of this file.
1
#ifndef LINTEL_SERIALIZATION_H
2
#define LINTEL_SERIALIZATION_H
3
4
#include <exception>
5
#include <memory>
6
7
#include "
lintel/core/configuration/DatabaseConnectionEntry.h
"
8
#include "
lintel/core/persistence/postgresql/Serialization.h
"
9
#include "
lintel/core/persistence/sqlite3/Serialization.h
"
10
11
namespace
lintel
{
12
namespace
db {
18
template
<
typename
T>
class
Serialization
19
{
20
public
:
28
static
std::string
serialize
(
T
type,
const
std::shared_ptr<DatabaseConnectionEntry> &
connectionEntry
)
29
{
30
switch
(
connectionEntry
->getType()) {
31
case
ConnectionType::SQLite
:
32
return
sqlite::Serialization<T>::serialize
(type);
33
case
ConnectionType::PostgreSQL
:
34
return
postgresql::Serialization<T>::serialize
(type);
35
default
:
36
throw
std::runtime_error(
"not supported connection type"
);
37
}
38
}
39
47
static
T
deserialize
(
const
std::string &value,
const
std::shared_ptr<DatabaseConnectionEntry> &
connectionEntry
)
48
{
49
switch
(
connectionEntry
->getType()) {
50
case
ConnectionType::SQLite
:
51
return
sqlite::Serialization<T>::deserialize
(value);
52
case
ConnectionType::PostgreSQL
:
53
return
postgresql::Serialization<T>::deserialize
(value);
54
default
:
55
throw
std::runtime_error(
"not supported connection type"
);
56
}
57
}
58
};
59
}
// namespace db
60
61
}
// namespace lintel
62
#endif
// LINTEL_SERIALIZATION_H
DatabaseConnectionEntry.h
lintel::db::ConnectionType::SQLite
@ SQLite
Definition
ConnectionType.h:18
lintel::db::ConnectionType::PostgreSQL
@ PostgreSQL
Definition
ConnectionType.h:18
lintel::db::Serialization
Definition
Serialization.h:19
lintel::db::Serialization::serialize
static std::string serialize(T type, const std::shared_ptr< DatabaseConnectionEntry > &connectionEntry)
Definition
Serialization.h:28
lintel::db::Serialization::deserialize
static T deserialize(const std::string &value, const std::shared_ptr< DatabaseConnectionEntry > &connectionEntry)
Definition
Serialization.h:47
lintel::postgresql::Serialization
Definition
Serialization.h:34
lintel::sqlite::Serialization
Definition
Serialization.h:38
lintel
Definition
BaseFeature.h:6
lintel::type_name
constexpr std::string_view type_name()
Definition
TypeName.h:9
Serialization.h
Serialization.h
Generated by
1.9.8