diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-06-05 11:09:13 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-06-05 13:05:13 +0100 |
commit | 5956203258880a25d1705734e2bf57eb7a60a90c (patch) | |
tree | a844a5ce1784ac26cdc1300b7496ad2bcdd7da35 /lib/dbTypes.h | |
parent | Get upstream from DB (diff) | |
download | mygrate-5956203258880a25d1705734e2bf57eb7a60a90c.tar.bz2 mygrate-5956203258880a25d1705734e2bf57eb7a60a90c.tar.xz mygrate-5956203258880a25d1705734e2bf57eb7a60a90c.zip |
Wrap DbValue in a class so we can add helpers to it
Diffstat (limited to 'lib/dbTypes.h')
-rw-r--r-- | lib/dbTypes.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/dbTypes.h b/lib/dbTypes.h index b35b036..068d642 100644 --- a/lib/dbTypes.h +++ b/lib/dbTypes.h @@ -33,8 +33,28 @@ namespace MyGrate { }; using Blob = std::span<const std::byte>; - using DbValue = std::variant<std::nullptr_t, double, float, int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, + using DbValueV = std::variant<std::nullptr_t, double, float, int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, timespec, Date, Time, DateTime, std::string_view, BitSet, Blob>; + + class DbValue : public DbValueV { + public: + using DbValueV::DbValueV; + using DbValueV::operator=; + + template<typename V> + inline auto + visit(V && v) const + { + return std::visit(std::forward<V>(v), static_cast<const DbValueV &>(*this)); + } + + template<typename T> + inline const auto & + get() const + { + return std::get<T>(static_cast<const DbValueV &>(*this)); + } + }; } #endif |