Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type IChangeable ¶
type IChangeable interface {
// The UTC time at which the object was last changed (created or updated).
GetChangeTime() time.Time
}
Interface for data objects that contain their latest change time.
Example
type MyStruct struct {
...
changeTime time.Time
}
func (c *MyStruct) GetChangeTime() time.Time {
return c.changeTime
}
func (c *MyStruct) SetGetChangeTime(changeTime time.Time) {
c.changeTime = changeTime
}
type IIdentifiable ¶
type IIdentifiable[K any] interface { GetId() K }
IIdentifiable interface for data objects to operate with ids.
Example
type MyStruct struct {
...
id string
}
func (c *MyStruct) GetId() string {
return c.id
}
func (c *MyStruct) SetId(id string) {
c.id = id
}
type IIdentifier ¶
type INamed ¶
type INamed interface {
GetName() string
}
Interface for data objects that have human-readable names.
Example
type MyStruct struct {
...
name string
}
func (c *MyStruct) GetName() string {
return c.name
}
func (c *MyStruct) SetName(name string) {
c.name = name
}
type IStringIdentifiable ¶
IStringIdentifiable interface for data objects to operate with ids.
Example
type MyStruct struct {
...
id string
}
func (c *MyStruct) GetId() string {
return c.id
}
func (c *MyStruct) SetId(id string) {
c.id = id
}
type ITrackable ¶
type ITrackable interface {
// The UTC time at which the object was created.
GetCreateTime() time.Time
// The UTC time at which the object was last changed (created, updated, or deleted).
GetChangeTime() time.Time
// The logical deletion flag. True when object is deleted and null or false otherwise
GetDeleted() bool
}
Interface for data objects that can track their changes, including logical deletion.
Example
type MyStruct struct {
...
changeTime time.Time
createTime time.Time
deleted bool
}
func (c *MyStruct) GetChangeTime() string {
return c.changeTime
}
func (c *MyStruct) SetDeleted(deleted bool) {
c.deleted = deleted
}
type IVersioned ¶
type IVersioned interface {
// The object's version.
GetVersion() string
}
Interface for data objects that can be versioned.
Versioning is often used as optimistic concurrency mechanism.
The version doesn't have to be a number, but it is recommended to use sequential values to determine if one object has newer or older version than another one.
It is a common pattern to use the time of change as the object version.
Example
type MyStruct struct {
...
version string
}
func (c *MyStruct) GetVersion() string {
return c.version
}
func (c *MyStruct) SetVersion(version string) {
c.version = version
}
func (c *MyStruct) UpdateData(ctx context.Context, item: MyData) {
if (item.version < oldItem.version) {
panic("VERSION_CONFLICT")
}
}
type MultiString ¶
MultiString An object that contains string translations for multiple languages. Language keys use two-letter codes like: 'en', 'sp', 'de', 'ru', 'fr', 'pr'. When translation for specified language does not exists it defaults to English ('en'). When English does not exists it falls back to the first defined language.
Example:
values := NewMultiStringFromTuples(
"en", "Hello World!",
"ru", "Привет мир!"
);
value1 := values.Get("ru"); // Result: "Привет мир!"
value2 := values.Get("pt"); // Result: "Hello World!"