50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package analysis
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
type Ianalysis interface {
|
|
GetList() (interface{}, error)
|
|
GetExecSql() (SQL string, allArgs []interface{}, err error) //后续开发 查看执行sql功能
|
|
}
|
|
|
|
type Command int
|
|
|
|
const (
|
|
FunnelComand Command = 1
|
|
RetentionComand Command = 2
|
|
TraceComand Command = 3
|
|
EventComand Command = 4
|
|
UserAttrCommand Command = 5
|
|
UserListCommand Command = 6
|
|
UserEventDetailListCommand Command = 7
|
|
UserEventCountCommand Command = 8
|
|
)
|
|
|
|
var commandMap = map[Command]func(reqData []byte) (Ianalysis, error){
|
|
FunnelComand: NewFunnel,
|
|
RetentionComand: NewRetention,
|
|
TraceComand: NewTrace,
|
|
EventComand: NewEvent,
|
|
UserAttrCommand: NewUserAttr,
|
|
UserListCommand: NewUserList,
|
|
UserEventDetailListCommand: NewUserEventDetailList,
|
|
UserEventCountCommand: NewUserEventCountList,
|
|
}
|
|
|
|
func NewAnalysisByCommand(command Command, reqData []byte) (i Ianalysis, err error) {
|
|
var fn func(reqData []byte) (Ianalysis, error)
|
|
var found bool
|
|
if fn, found = commandMap[command]; !found {
|
|
return nil, errors.New(fmt.Sprintf("没有找到该命令:%v", command))
|
|
}
|
|
|
|
return fn(reqData)
|
|
}
|
|
|
|
func GetAnalysisRes(i Ianalysis) (res interface{}, err error) {
|
|
return i.GetList()
|
|
}
|