1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ 2 3 #ifndef DBVALUE_H 4 #define DBVALUE_H 5 6 #include "db_ido/i2-db_ido.hpp" 7 #include "base/object.hpp" 8 #include "base/value.hpp" 9 10 namespace icinga 11 { 12 13 enum DbValueType 14 { 15 DbValueTimestamp, 16 DbValueObjectInsertID 17 }; 18 19 /** 20 * A database value. 21 * 22 * @ingroup ido 23 */ 24 struct DbValue final : public Object 25 { 26 public: 27 DECLARE_PTR_TYPEDEFS(DbValue); 28 29 DbValue(DbValueType type, Value value); 30 31 static Value FromTimestamp(const Value& ts); 32 static Value FromValue(const Value& value); 33 static Value FromObjectInsertID(const Value& value); 34 35 static bool IsTimestamp(const Value& value); 36 static bool IsObjectInsertID(const Value& value); 37 38 static Value ExtractValue(const Value& value); 39 40 DbValueType GetType() const; 41 42 Value GetValue() const; 43 void SetValue(const Value& value); 44 45 private: 46 DbValueType m_Type; 47 Value m_Value; 48 }; 49 50 } 51 52 #endif /* DBVALUE_H */ 53