finnow/finnow-api/source/history/model.d

47 lines
1.0 KiB
D

module history.model;
import std.datetime.systime;
/**
* A history containing a series of items, which all usually pertain to a
* certain target entity.
*/
struct History {
immutable ulong id;
}
/**
* The type of history item. This can be used as a discriminator value to treat
* different history types separately.
*/
enum HistoryItemType : string {
TEXT = "TEXT"
}
HistoryItemType getHistoryItemType(string text) {
import std.traits;
static foreach (t; EnumMembers!HistoryItemType) {
if (text == t) return t;
}
throw new Exception("Unknown history item type: " ~ text);
}
/**
* A single item in a history. It has a UTC timestamp and a type. From the type,
* one can get more specific information.
*/
struct HistoryItem {
immutable ulong id;
immutable ulong historyId;
immutable SysTime timestamp;
immutable HistoryItemType type;
}
/**
* Additional data for history items with the TEXT type.
*/
struct HistoryItemText {
immutable ulong itemId;
immutable string content;
}