tables_utility.go
2.07 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package restutility
import (
"encoding/json"
"errors"
)
type TableConfig struct {
Tables []Table
}
type Table struct {
TableType string `json:"tableType"`
Translations []TableTranslation `json:"translations"`
TableFields []Field `json:"tableFields"`
Correlations []CorrelationField `json:"correlationFields"`
IdField string `json:"idField"`
}
type CorrelationField struct {
Result string `json:"result"`
Elements []string `json:"elements"`
Type string `json:"type"`
}
type TableTranslation struct {
Language string `json:"language"`
FieldsLabels map[string]string `json:"fieldsLabels"`
}
func (tl TableConfig) LoadTranslations(tableType string) LangMap {
translations := make(LangMap, 0)
for _, table := range tl.Tables {
if tableType == table.TableType {
for _, t := range table.Translations {
translations[t.Language] = t.FieldsLabels
}
}
}
return translations
}
func (tl TableConfig) LoadFields(tableType string) []Field {
fields := make([]Field, 0)
for _, table := range tl.Tables {
if tableType == table.TableType {
for _, f := range table.TableFields {
fields = append(fields, f)
}
}
}
return fields
}
func (tl TableConfig) LoadIdField(tableType string) string {
for _, table := range tl.Tables {
if tableType == table.TableType {
return table.IdField
}
}
return ""
}
func (tl TableConfig) LoadCorrelations(tableType string) []CorrelationField {
resp := make([]CorrelationField, 0)
for _, table := range tl.Tables {
if tableType == table.TableType {
for _, f := range table.Correlations {
resp = append(resp, f)
}
}
}
return resp
}
var _tables TableConfig
var _prevProject string
func InitTables(jsonbuf []byte) error {
json.Unmarshal(jsonbuf, &_tables.Tables)
if len(_tables.Tables) == 0 {
return errors.New("tables config is corrupt")
}
return nil
}
func loadTable(table string) JSONParams {
return NewJSONParams(_tables.LoadTranslations(table),
_tables.LoadFields(table),
_tables.LoadIdField(table),
_tables.LoadCorrelations(table))
}