-
Notifications
You must be signed in to change notification settings - Fork 0
/
dbsaver.go
46 lines (38 loc) · 940 Bytes
/
dbsaver.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
package upload
import (
"io"
uploadClient "github.com/webx-top/client/upload"
"github.com/admpub/color"
"github.com/admpub/log"
modelFile "github.com/admpub/nging/application/model/file"
)
type (
DBSaver func(fileM *modelFile.File, result *uploadClient.Result, reader io.Reader) error
)
var (
dbSavers = map[string]DBSaver{}
DefaultDBSaver = func(fileM *modelFile.File, result *uploadClient.Result, reader io.Reader) error {
return nil
}
)
func DBSaverRegister(key string, dbsaver DBSaver) {
dbSavers[key] = dbsaver
log.Info(color.YellowString(`dbsaver.register:`), key)
}
func DBSaverUnregister(keys ...string) {
for _, key := range keys {
_, ok := dbSavers[key]
if ok {
delete(dbSavers, key)
}
}
}
func DBSaverGet(key string, defaults ...string) DBSaver {
if dbsaver, ok := dbSavers[key]; ok {
return dbsaver
}
if len(defaults) > 0 {
return DBSaverGet(defaults[0])
}
return DefaultDBSaver
}