diff options
Diffstat (limited to 'platform/default/sqlite3.cpp')
-rw-r--r-- | platform/default/sqlite3.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/platform/default/sqlite3.cpp b/platform/default/sqlite3.cpp index 505423d1fd..b6db71a752 100644 --- a/platform/default/sqlite3.cpp +++ b/platform/default/sqlite3.cpp @@ -218,7 +218,9 @@ void Statement::bindBlob(int offset, const std::vector<uint8_t>& value, bool ret bindBlob(offset, value.data(), value.size(), retain); } -template <> void Statement::bind(int offset, std::chrono::system_clock::time_point value) { +template <> +void Statement::bind( + int offset, std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds> value) { assert(stmt); check(sqlite3_bind_int64(stmt, offset, std::chrono::system_clock::to_time_t(value))); } @@ -231,7 +233,10 @@ template <> void Statement::bind(int offset, optional<std::string> value) { } } -template <> void Statement::bind(int offset, optional<std::chrono::system_clock::time_point> value) { +template <> +void Statement::bind( + int offset, + optional<std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds>> value) { if (!value) { bind(offset, nullptr); } else { @@ -283,9 +288,12 @@ template <> std::vector<uint8_t> Statement::get(int offset) { return { begin, end }; } -template <> std::chrono::system_clock::time_point Statement::get(int offset) { +template <> +std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds> +Statement::get(int offset) { assert(stmt); - return std::chrono::system_clock::from_time_t(sqlite3_column_int64(stmt, offset)); + return std::chrono::time_point_cast<std::chrono::seconds>( + std::chrono::system_clock::from_time_t(sqlite3_column_int64(stmt, offset))); } template <> optional<int64_t> Statement::get(int offset) { @@ -315,12 +323,15 @@ template <> optional<std::string> Statement::get(int offset) { } } -template <> optional<std::chrono::system_clock::time_point> Statement::get(int offset) { +template <> +optional<std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds>> +Statement::get(int offset) { assert(stmt); if (sqlite3_column_type(stmt, offset) == SQLITE_NULL) { - return optional<std::chrono::system_clock::time_point>(); + return {}; } else { - return get<std::chrono::system_clock::time_point>(offset); + return get<std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds>>( + offset); } } |