-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata.go
47 lines (32 loc) · 984 Bytes
/
data.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package mdv
import (
"fmt"
"github.com/gogap/config"
)
type DataFilter func(modelName string, v interface{}, dataArgs map[string]interface{}) (err error)
type NewDataFillerFunc func(conf config.Configuration) (DataFiller, error)
var (
dataFillers = make(map[string]NewDataFillerFunc)
)
type DataFiller interface {
Fill(modelName string, modProducer ModelProducer, args map[string]interface{}) (value interface{}, err error)
}
func RegisterDataFiller(driverName string, fn NewDataFillerFunc) {
if fn == nil {
panic("NewDataFillerFunc is nil")
}
_, exist := dataFillers[driverName]
if exist {
panic("dataFillers's driver already registerd: " + driverName)
}
dataFillers[driverName] = fn
}
func NewDataFiller(driverName string, conf config.Configuration) (filler DataFiller, err error) {
fn, exist := dataFillers[driverName]
if !exist {
err = fmt.Errorf("the data filler driver of %s not exist", driverName)
return
}
filler, err = fn(conf)
return
}