Diarkis Room - How To Handle Room Properties Safely Using Data Capsule

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")