Files
EdgeAPI/internal/db/models/sys_event_model_ext.go

28 lines
512 B
Go
Raw Permalink Normal View History

2020-09-26 08:06:40 +08:00
package models
import (
"encoding/json"
"errors"
"reflect"
)
2022-03-22 19:30:30 +08:00
// DecodeEvent 解码事件
2020-09-26 08:06:40 +08:00
func (this *SysEvent) DecodeEvent() (EventInterface, error) {
// 解析数据类型
t, isOk := eventTypeMapping[this.Type]
if !isOk {
return nil, errors.New("can not found event type '" + this.Type + "'")
}
ptr := reflect.New(t).Interface().(EventInterface)
// 解析参数
if IsNotNull(this.Params) {
2022-03-22 19:30:30 +08:00
err := json.Unmarshal(this.Params, ptr)
2020-09-26 08:06:40 +08:00
if err != nil {
return nil, err
}
}
return ptr, nil
}