Diarkis Room と Data Capsule を使って安全にルームプロパティを扱う方法

Diarkis では interface{} 型のデータを安全に扱うための datacapsule というパッケージを用意しています。ここでは、Diarkis Room のプロパティを datacapsule を使って安全に取り扱う方法を説明します。

Data Capsule

Data Capsuleは、interface{} のデータを安全に管理するために、Diarkis が提供するデータ構造です。

import "github.com/Diarkis/diarkis/datacapsule"

Data Capsuleを使った Room のプロパティの更新

_ := 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()
})

Data Capsuleを使った Room のプロパティ読み込み

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