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