Blame view

tables_utility.go 2.07 KB
64041a2ea   Marko Tikvić   first commit
1
2
3
4
  package restutility
  
  import (
  	"encoding/json"
64041a2ea   Marko Tikvić   first commit
5
  	"errors"
64041a2ea   Marko Tikvić   first commit
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
  )
  
  type TableConfig struct {
  	Tables []Table
  }
  
  type Table struct {
  	TableType    string             `json:"tableType"`
  	Translations []TableTranslation `json:"translations"`
  	TableFields  []Field            `json:"tableFields"`
  	Correlations []CorrelationField `json:"correlation_fields"`
  	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
25e001550   Marko Tikvić   exported everything
84
  func InitTables(jsonbuf []byte) error {
90fd36e9b   Marko Tikvić   resolved some dep...
85
  	json.Unmarshal(jsonbuf, &_tables.Tables)
90fd36e9b   Marko Tikvić   resolved some dep...
86
  	if len(_tables.Tables) == 0 {
64041a2ea   Marko Tikvić   first commit
87
88
  		return errors.New("tables config is corrupt")
  	}
64041a2ea   Marko Tikvić   first commit
89
90
  	return nil
  }
25e001550   Marko Tikvić   exported everything
91
  func LoadTable(table string) JSONParams {
64041a2ea   Marko Tikvić   first commit
92
  	return NewJSONParams(_tables.LoadTranslations(table),
25e001550   Marko Tikvić   exported everything
93
94
95
  		_tables.LoadFields(table),
  		_tables.LoadIdField(table),
  		_tables.LoadCorrelations(table))
64041a2ea   Marko Tikvić   first commit
96
  }