Skip to content

Commit 9cef37d

Browse files
committed
Move additional constructor arguments into struct
1 parent 2c9cbf6 commit 9cef37d

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

hdr/sqlite_modern_cpp.h

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22

3+
#include <cassert>
34
#include <string>
45
#include <functional>
56
#include <stdexcept>
@@ -213,7 +214,7 @@ namespace sqlite {
213214
std::is_floating_point<Type>::value
214215
|| std::is_integral<Type>::value
215216
|| std::is_same<sqlite_int64, Type>::value
216-
> { };
217+
> { };
217218

218219

219220
template<typename T> friend database_binder& operator <<(database_binder& db, const T& val);
@@ -297,6 +298,10 @@ namespace sqlite {
297298
}
298299
};
299300

301+
struct sqlite_config {
302+
std::string key{};
303+
};
304+
300305
class database {
301306
private:
302307
std::shared_ptr<sqlite3> _db;
@@ -318,6 +323,18 @@ namespace sqlite {
318323
database(std::shared_ptr<sqlite3> db):
319324
_db(db) {}
320325

326+
database(const std::string &db_name, const sqlite_config &config):
327+
database(std::u16string(db_name.begin(), db_name.end()), config) {}
328+
329+
database(const std::u16string &db_name, const sqlite_config &config): database(db_name) {
330+
#ifdef SQLITE_HAS_CODEC
331+
if(!config.key.empty()) set_key(config.key);
332+
#else
333+
assert(config.key.empty() && "Encryption supported is disabled.");
334+
(void)config; // Suppress unused warning
335+
#endif
336+
}
337+
321338
database_binder operator<<(const std::string& sql) {
322339
return database_binder(_db, sql);
323340
}
@@ -341,13 +358,6 @@ namespace sqlite {
341358
}
342359

343360
#ifdef SQLITE_HAS_CODEC
344-
database(const std::string &db_name, const std::string &key): database(db_name) {
345-
set_key(key);
346-
}
347-
database(const std::u16string &db_name, const std::string &key): database(db_name) {
348-
set_key(key);
349-
}
350-
351361
void set_key(const std::string &key) {
352362
if(auto ret = sqlite3_key(_db.get(), key.data(), key.size()))
353363
exceptions::throw_sqlite_error(ret);

0 commit comments

Comments
 (0)