32 #ifndef LEDGER_CORE_MIGRATIONS_HPP 33 #define LEDGER_CORE_MIGRATIONS_HPP 37 #include "utils/Exception.hpp" 44 template <
int migrationNumber>
45 void migrate(soci::session& sql) {
46 std::cerr <<
"No specified migration for version " << migrationNumber << std::endl;
50 template <
int version>
51 bool migrate(soci::session& sql,
int currentVersion) {
52 bool previousResult = migrate<version - 1>(sql, currentVersion);
54 if (currentVersion < version) {
55 migrate<version>(sql);
56 sql <<
"UPDATE __database_meta__ SET version = :version", soci::use(version);
60 return previousResult;
63 template <
int version>
64 void rollback(soci::session& sql) {
74 template <
int version>
75 void rollback(soci::session& sql,
int currentVersion) {
76 if (currentVersion == version) {
78 rollback<version>(sql);
84 auto prevVersion = version - 1;
85 sql <<
"UPDATE __database_meta__ SET version = :version", soci::use(prevVersion);
88 rollback<version - 1>(sql, currentVersion - 1);
90 }
else if (currentVersion < version) {
93 rollback<version - 1>(sql, currentVersion);
101 template <>
bool migrate<-1>(soci::session& sql,
int currentVersion);
102 template <>
void rollback<-1>(soci::session& sql,
int currentVersion);
105 template <>
void migrate<0>(soci::session& sql);
106 template <>
void rollback<0>(soci::session& sql);
108 template <>
void migrate<1>(soci::session& sql);
109 template <>
void rollback<1>(soci::session& sql);
111 template <>
void migrate<2>(soci::session& sql);
112 template <>
void rollback<2>(soci::session& sql);
114 template <>
void migrate<3>(soci::session& sql);
115 template <>
void rollback<3>(soci::session& sql);
117 template <>
void migrate<4>(soci::session& sql);
118 template <>
void rollback<4>(soci::session& sql);
120 template <>
void migrate<5>(soci::session& sql);
121 template <>
void rollback<5>(soci::session& sql);
123 template <>
void migrate<6>(soci::session& sql);
124 template <>
void rollback<6>(soci::session& sql);
126 template <>
void migrate<7>(soci::session& sql);
127 template <>
void rollback<7>(soci::session& sql);
130 template <>
void migrate<8>(soci::session& sql);
131 template <>
void rollback<8>(soci::session& sql);
134 template <>
void migrate<9>(soci::session& sql);
135 template <>
void rollback<9>(soci::session& sql);
138 template <>
void migrate<10>(soci::session& sql);
139 template <>
void rollback<10>(soci::session& sql);
142 template <>
void migrate<11>(soci::session& sql);
143 template <>
void rollback<11>(soci::session& sql);
146 template <>
void migrate<12>(soci::session& sql);
147 template <>
void rollback<12>(soci::session& sql);
150 template <>
void migrate<13>(soci::session& sql);
151 template <>
void rollback<13>(soci::session& sql);
154 template <>
void migrate<14>(soci::session& sql);
155 template <>
void rollback<14>(soci::session& sql);
158 template <>
void migrate<15>(soci::session& sql);
159 template <>
void rollback<15>(soci::session& sql);
162 template <>
void migrate<16>(soci::session& sql);
163 template <>
void rollback<16>(soci::session& sql);
166 template <>
void migrate<17>(soci::session& sql);
167 template <>
void rollback<17>(soci::session& sql);
171 #endif //LEDGER_CORE_MIGRATIONS_HPP Definition: Account.cpp:8
int getDatabaseMigrationVersion(soci::session &sql)
Get the current database migration version.
Definition: migrations.cpp:36