/
saveData.go
70 lines (59 loc) · 1.68 KB
/
saveData.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package processor
import (
"fmt"
"strings"
"github.com/airenas/go-app/pkg/goapp"
"github.com/pkg/errors"
"github.com/airenas/tts-line/internal/pkg/service/api"
"github.com/airenas/tts-line/internal/pkg/synthesizer"
"github.com/airenas/tts-line/internal/pkg/utils"
)
//SaverDB interface for text saving
type SaverDB interface {
Save(req, text string, reqType utils.RequestTypeEnum, tags []string) error
}
type saver struct {
sDB SaverDB
tType utils.RequestTypeEnum
}
//NewSaver creates new text to db processor
func NewSaver(s SaverDB, t utils.RequestTypeEnum) (synthesizer.Processor, error) {
if s == nil {
return nil, errors.New("No Saver")
}
return &saver{sDB: s, tType: t}, nil
}
func (p *saver) Process(data *synthesizer.TTSData) error {
if !data.Input.AllowCollectData {
goapp.Log.Info("Skip saving to DB")
return nil
}
defer goapp.Estimate("SaveToDB " + p.tType.String())()
return p.sDB.Save(data.RequestID, getText(data, p.tType), p.tType, getTags(data.Input))
}
func getText(data *synthesizer.TTSData, t utils.RequestTypeEnum) string {
switch t {
case utils.RequestOriginal:
return data.OriginalText
case utils.RequestCleaned:
return strings.Join(data.Text, " ")
case utils.RequestNormalized:
return strings.Join(data.TextWithNumbers, " ")
case utils.RequestUser:
return data.OriginalText
case utils.RequestOriginalSSML:
return data.OriginalText
}
goapp.Log.Warnf("Not configured RequestTypeEnum %v", t)
return data.OriginalText
}
func getTags(cfg *api.TTSRequestConfig) []string {
if cfg == nil {
return nil
}
return cfg.SaveTags
}
// Info return info about processor
func (p *saver) Info() string {
return fmt.Sprintf("saver(%s)", p.tType.String())
}