Diarkis comes with a data encapsulation package called datacapsule. It is useful when handling interface{} data type safely.
Room Properties With Data Capsule
Data Capsule is a data structure provided by Diarkis to help you manage interface{} data safely.
import "github.com/Diarkis/diarkis/datacapsule"
Updating Room Properties Using Data Capsule
_ := room.UpdatePropertis(roomID, func(properties map[string]interface{}) bool {
if _, ok := properties["counter"]; !ok {
// Initialize
properties["counter"] = 0
}
capsule := datacapsule.NewCapsule()
err := capsule.Import(properties["counter"])
if err != nil {
// Handle error
return
}
counter := capsule.GetAsInt("counter")
counter++
capsule.SetAsInt("counter", counter)
properties["counter"] = capsule.Export()
})
Reading Room Properties Using Data Capsule
property := room.GetProperty(roomID, "counter")
if property == nil {
// Handle error
return
}
capsule := datacapsule.NewCapsule()
err := capsule.Import(property)
if err != nil {
// Handle error
return
}
counter := capsule.GetAsInt("counter")