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 }