bygdata/pkg/devtodev/event/game.go

92 lines
2.6 KiB
Go

package event
import "fmt"
func Onboarding(timestamp int64, level int, step int, fields map[string]interface{}) (map[string]interface{}, error) {
event := map[string]interface{}{
"code": "tr",
"timestamp": timestamp,
"level": level,
"step": step,
}
if err := addFields(event, fields, "code", "timestamp", "level", "step"); err != nil {
return nil, err
}
return event, nil
}
func CurrencyAccrual(timestamp int64, level int, bought, earned map[string]map[string]float64, fields map[string]interface{}) (map[string]interface{}, error) {
if len(bought) == 0 && len(earned) == 0 {
return nil, fmt.Errorf("either bought or earned must be provided")
}
event := map[string]interface{}{
"code": "ca",
"timestamp": timestamp,
"level": level,
}
if len(bought) > 0 {
event["bought"] = bought
}
if len(earned) > 0 {
event["earned"] = earned
}
if err := addFields(event, fields, "code", "timestamp", "level", "bought", "earned"); err != nil {
return nil, err
}
return event, nil
}
func CurrentBalance(timestamp int64, level int, balance map[string]float64, fields map[string]interface{}) (map[string]interface{}, error) {
event := map[string]interface{}{
"code": "cb",
"timestamp": timestamp,
"level": level,
"balance": balance,
}
if err := addFields(event, fields, "code", "timestamp", "level", "balance"); err != nil {
return nil, err
}
return event, nil
}
func LevelUp(timestamp int64, level int, balance, spent, earned, bought map[string]float64, fields map[string]interface{}) (map[string]interface{}, error) {
event := map[string]interface{}{
"code": "lu",
"timestamp": timestamp,
"level": level,
}
if len(balance) > 0 {
event["balance"] = balance
}
if len(spent) > 0 {
event["spent"] = spent
}
if len(earned) > 0 {
event["earned"] = earned
}
if len(bought) > 0 {
event["bought"] = bought
}
if err := addFields(event, fields, "code", "timestamp", "level", "balance", "spent", "earned", "bought"); err != nil {
return nil, err
}
return event, nil
}
func ProgressionEvent(timestamp int64, level int, name string, parameters map[string]interface{}, fields map[string]interface{}) (map[string]interface{}, error) {
if len(parameters) == 0 {
return nil, fmt.Errorf("parameters is required")
}
event := map[string]interface{}{
"code": "pe",
"timestamp": timestamp,
"level": level,
"name": name,
"parameters": parameters,
}
if err := addFields(event, fields, "code", "timestamp", "level", "name", "parameters"); err != nil {
return nil, err
}
return event, nil
}