Commit 39765a4304025d6c7db7ef9ce0ffbc00bf3c744d
1 parent
c430f3af58
Exists in
master
and in
1 other branch
added list and select configs
Showing
3 changed files
with
609 additions
and
1 deletions
Show diff stats
list_config.go
... | ... | @@ -0,0 +1,521 @@ |
1 | +package restutility | |
2 | + | |
3 | +import ( | |
4 | + "gopkg.in/rana/ora.v3" | |
5 | +) | |
6 | + | |
7 | +type ListOptions struct { | |
8 | + GlobalFilter bool `json:"globalFilter"` | |
9 | + LocalFilters bool `json:"localFilters"` | |
10 | + RemoteFilters bool `json:"remoteFilters"` | |
11 | + Pagination bool `json:"pagination"` | |
12 | + PageSize uint64 `json:"pageSize"` | |
13 | + Pivot bool `json:"pivot"` | |
14 | + Detail bool `json:"detail"` | |
15 | +} | |
16 | + | |
17 | +type ListFilter struct { | |
18 | + ObjectType string `json:"-"` | |
19 | + FiltersField string `json:"filtersField"` | |
20 | + DefaultValues string `json:"defaultValues"` | |
21 | + FiltersType string `json:"filtersType"` | |
22 | + FiltersLabel string `json:"filtersLabel"` | |
23 | +} | |
24 | + | |
25 | +type ListGraph struct { | |
26 | + ObjectType string `json:"objectType"` | |
27 | + X string `json:"xField"` | |
28 | + Y string `json:"yField"` | |
29 | + GroupField string `json:"groupField"` | |
30 | + Label string `json:"label"` | |
31 | +} | |
32 | + | |
33 | +type ListActions struct { | |
34 | + Create bool `json:"create"` | |
35 | + Update bool `json:"update"` | |
36 | + Delete bool `json:"delete"` | |
37 | + Export bool `json:"export"` | |
38 | + Print bool `json:"print"` | |
39 | + Graph bool `json:"graph"` | |
40 | +} | |
41 | + | |
42 | +type ListChildNode struct { | |
43 | + ObjectType string `json:"objectType"` | |
44 | + LabelField string `json:"label"` | |
45 | + Icon string `json:"icon"` | |
46 | +} | |
47 | + | |
48 | +type ListParentNode struct { | |
49 | + ObjectType string `json:"objectType"` | |
50 | + LabelField string `json:"labelField"` | |
51 | + FilterField string `json:"filterField"` | |
52 | +} | |
53 | + | |
54 | +type ListPivot struct { | |
55 | + ObjectType string `json:"objectType"` | |
56 | + GroupField string `json:"groupField"` | |
57 | + DistinctField string `json:"distinctField"` | |
58 | + Value string `json:"valueField"` | |
59 | +} | |
60 | + | |
61 | +type ListDetails struct { | |
62 | + ObjectType string `json:"objectType"` | |
63 | + ParentObjectType string `json:"parentObjectType"` | |
64 | + ParentFilterField string `json:"parentFilterField"` | |
65 | + SingleDetail bool `json:"singleDetail"` | |
66 | +} | |
67 | + | |
68 | +type ListConfig struct { | |
69 | + ObjectType string `json:"objectType"` | |
70 | + Title string `json:"title"` | |
71 | + LazyLoad bool `json:"lazyLoad"` | |
72 | + InlineEdit bool `json:"inlineEdit"` | |
73 | + Options ListOptions `json:"options"` | |
74 | + Filters []ListFilter `json:"defaultFilters"` | |
75 | + Graphs []ListGraph `json:"graphs"` | |
76 | + Actions ListActions `json:"actions"` | |
77 | + Parent []ListParentNode `json:"parent"` | |
78 | + Children []ListChildNode `json:"children"` | |
79 | + Pivots []ListPivot `json:"pivots"` | |
80 | + Details ListDetails `json:"details"` | |
81 | +} | |
82 | + | |
83 | +func GetListConfigObjectIdField(db *ora.Ses, otype string) string { | |
84 | + var resp string | |
85 | + var err error | |
86 | + var stmt *ora.Stmt | |
87 | + | |
88 | + stmt, err = db.Prep(`SELECT | |
89 | + ID_FIELD | |
90 | + FROM LIST_CONFIG_ID_FIELD | |
91 | + WHERE OBJECT_TYPE = '` + otype + `'`, | |
92 | + ora.S) | |
93 | + | |
94 | + defer stmt.Close() | |
95 | + | |
96 | + if err != nil { | |
97 | + return "" | |
98 | + } | |
99 | + | |
100 | + rset, err := stmt.Qry() | |
101 | + if rset.Next() { | |
102 | + resp = rset.Row[0].(string) | |
103 | + } | |
104 | + | |
105 | + if rset.Err != nil { | |
106 | + return "" | |
107 | + } | |
108 | + | |
109 | + return resp | |
110 | +} | |
111 | + | |
112 | +func NewDefaultList(objType string) ListConfig { | |
113 | + list := ListConfig{ | |
114 | + ObjectType: objType, | |
115 | + Title: objType, | |
116 | + LazyLoad: false, | |
117 | + Options: ListOptions{ | |
118 | + GlobalFilter: true, | |
119 | + LocalFilters: true, | |
120 | + RemoteFilters: false, | |
121 | + Pagination: true, | |
122 | + PageSize: 20, | |
123 | + }, | |
124 | + Filters: nil, | |
125 | + Actions: ListActions{ | |
126 | + Create: false, | |
127 | + Update: false, | |
128 | + Delete: false, | |
129 | + Export: false, | |
130 | + Print: false, | |
131 | + Graph: false, | |
132 | + }, | |
133 | + Parent: nil, | |
134 | + Children: nil, | |
135 | + } | |
136 | + | |
137 | + return list | |
138 | +} | |
139 | + | |
140 | +func GetListConfig(db *ora.Ses, objType string) (ListConfig, error) { | |
141 | + resp := NewDefaultList(objType) | |
142 | + var err error | |
143 | + | |
144 | + err = setListParams(db, &resp, objType) | |
145 | + resp.Children, err = getListChildren(db, objType) | |
146 | + resp.Actions, err = getListActions(db, objType) | |
147 | + resp.Filters, err = getListFilters(db, objType) | |
148 | + resp.Options, err = getListOptions(db, objType) | |
149 | + resp.Parent, err = getListParent(db, objType) | |
150 | + resp.Graphs, err = getListGraph(db, objType) | |
151 | + resp.Pivots, err = getListPivot(db, objType) | |
152 | + resp.Details, err = getListDetails(db, objType) | |
153 | + | |
154 | + if err != nil { | |
155 | + return ListConfig{}, err | |
156 | + } | |
157 | + | |
158 | + return resp, nil | |
159 | +} | |
160 | + | |
161 | +func setListParams(db *ora.Ses, list *ListConfig, objType string) error { | |
162 | + var err error | |
163 | + var stmt *ora.Stmt | |
164 | + query := `SELECT | |
165 | + OBJECT_TYPE, TITLE, LAZY_LOAD, INLINE_EDIT | |
166 | + FROM LIST_CONFIG | |
167 | + WHERE OBJECT_TYPE = '` + objType + `'` | |
168 | + | |
169 | + stmt, err = db.Prep(query, ora.S, ora.S, ora.U32, ora.U32) | |
170 | + if err != nil { | |
171 | + return err | |
172 | + } | |
173 | + defer stmt.Close() | |
174 | + | |
175 | + rset, err := stmt.Qry() | |
176 | + if err != nil { | |
177 | + return err | |
178 | + } | |
179 | + if rset.Next() { | |
180 | + otype := rset.Row[0].(string) | |
181 | + if otype != "" { | |
182 | + list.ObjectType = otype | |
183 | + } | |
184 | + | |
185 | + title := rset.Row[1].(string) | |
186 | + if title != "" { | |
187 | + list.Title = title | |
188 | + } | |
189 | + list.LazyLoad = rset.Row[2].(uint32) != 0 | |
190 | + list.InlineEdit = rset.Row[3].(uint32) != 0 | |
191 | + } | |
192 | + if rset.Err != nil { | |
193 | + return rset.Err | |
194 | + } | |
195 | + return nil | |
196 | +} | |
197 | + | |
198 | +func getListChildren(db *ora.Ses, objType string) ([]ListChildNode, error) { | |
199 | + resp := make([]ListChildNode, 0) | |
200 | + var err error | |
201 | + var stmt *ora.Stmt | |
202 | + query := `SELECT | |
203 | + OBJECT_TYPE, LABEL, ICON | |
204 | + FROM LIST_CONFIG_CHILD | |
205 | + WHERE PARENT_OBJECT_TYPE = '` + objType + `'` | |
206 | + | |
207 | + stmt, err = db.Prep(query, ora.S, ora.S, ora.S) | |
208 | + if err != nil { | |
209 | + return resp, err | |
210 | + } | |
211 | + defer stmt.Close() | |
212 | + | |
213 | + rset, err := stmt.Qry() | |
214 | + if err != nil { | |
215 | + return resp, err | |
216 | + } | |
217 | + for rset.Next() { | |
218 | + resp = append(resp, ListChildNode{ | |
219 | + ObjectType: rset.Row[0].(string), | |
220 | + LabelField: rset.Row[1].(string), | |
221 | + Icon: rset.Row[2].(string), | |
222 | + }) | |
223 | + } | |
224 | + if rset.Err != nil { | |
225 | + return nil, rset.Err | |
226 | + } | |
227 | + | |
228 | + return resp, nil | |
229 | +} | |
230 | + | |
231 | +func getListActions(db *ora.Ses, objType string) (ListActions, error) { | |
232 | + var resp ListActions | |
233 | + var err error | |
234 | + var stmt *ora.Stmt | |
235 | + query := `SELECT | |
236 | + ACTION_CREATE, ACTION_UPDATE, ACTION_DELETE, ACTION_EXPORT, | |
237 | + ACTION_PRINT, ACTION_GRAPH | |
238 | + FROM LIST_CONFIG | |
239 | + WHERE OBJECT_TYPE = '` + objType + `'` | |
240 | + | |
241 | + stmt, err = db.Prep(query, ora.U32, ora.U32, ora.U32, ora.U32, | |
242 | + ora.U32, ora.U32) | |
243 | + if err != nil { | |
244 | + return ListActions{}, err | |
245 | + } | |
246 | + defer stmt.Close() | |
247 | + | |
248 | + rset, err := stmt.Qry() | |
249 | + if err != nil { | |
250 | + return ListActions{}, err | |
251 | + } | |
252 | + if rset.Next() { | |
253 | + resp.Create = rset.Row[0].(uint32) != 0 | |
254 | + resp.Update = rset.Row[1].(uint32) != 0 | |
255 | + resp.Delete = rset.Row[2].(uint32) != 0 | |
256 | + resp.Export = rset.Row[3].(uint32) != 0 | |
257 | + resp.Print = rset.Row[4].(uint32) != 0 | |
258 | + resp.Graph = rset.Row[5].(uint32) != 0 | |
259 | + } | |
260 | + if rset.Err != nil { | |
261 | + return ListActions{}, rset.Err | |
262 | + } | |
263 | + return resp, nil | |
264 | +} | |
265 | + | |
266 | +func getListFilters(db *ora.Ses, objType string) ([]ListFilter, error) { | |
267 | + resp := make([]ListFilter, 0) | |
268 | + filtersField, err := getFilterFields(db, objType) | |
269 | + if err != nil { | |
270 | + return nil, err | |
271 | + } | |
272 | + for _, field := range filtersField { | |
273 | + filters, _ := getFiltersByFilterField(db, field) | |
274 | + for _, filter := range filters { | |
275 | + resp = append(resp, ListFilter{ | |
276 | + ObjectType: objType, | |
277 | + FiltersField: field, | |
278 | + DefaultValues: filter.DefaultValues, | |
279 | + FiltersLabel: filter.Label, | |
280 | + FiltersType: filter.Type, | |
281 | + }) | |
282 | + } | |
283 | + } | |
284 | + | |
285 | + return resp, nil | |
286 | +} | |
287 | + | |
288 | +func getFilterFields(db *ora.Ses, objType string) ([]string, error) { | |
289 | + filtersField := make([]string, 0) | |
290 | + var err error | |
291 | + var stmt *ora.Stmt | |
292 | + query := `SELECT | |
293 | + FILTERS_FIELD | |
294 | + FROM LIST_CONFIG_FILTERS | |
295 | + WHERE OBJECT_TYPE = '` + objType + `'` | |
296 | + | |
297 | + stmt, err = db.Prep(query, ora.S) | |
298 | + if err != nil { | |
299 | + return nil, err | |
300 | + } | |
301 | + defer stmt.Close() | |
302 | + | |
303 | + rset, err := stmt.Qry() | |
304 | + if err != nil { | |
305 | + return nil, err | |
306 | + } | |
307 | + for rset.Next() { | |
308 | + filtersField = append(filtersField, rset.Row[0].(string)) | |
309 | + } | |
310 | + if rset.Err != nil { | |
311 | + return nil, rset.Err | |
312 | + } | |
313 | + return filtersField, nil | |
314 | +} | |
315 | + | |
316 | +type TempFilter struct { | |
317 | + DefaultValues string | |
318 | + Label string | |
319 | + Type string | |
320 | +} | |
321 | + | |
322 | +func getFiltersByFilterField(db *ora.Ses, filtersField string) ([]TempFilter, error) { | |
323 | + resp := make([]TempFilter, 0) | |
324 | + var err error | |
325 | + var stmt *ora.Stmt | |
326 | + query := `SELECT | |
327 | + FILTERS_TYPE, FILTERS_LABEL, DEFAULT_VALUES | |
328 | + FROM LIST_FILTERS_FIELD | |
329 | + WHERE FILTERS_FIELD = '` + filtersField + `'` | |
330 | + | |
331 | + stmt, err = db.Prep(query, ora.S, ora.S, ora.S) | |
332 | + if err != nil { | |
333 | + return resp, err | |
334 | + } | |
335 | + defer stmt.Close() | |
336 | + | |
337 | + rset, err := stmt.Qry() | |
338 | + if err != nil { | |
339 | + return resp, err | |
340 | + } | |
341 | + for rset.Next() { | |
342 | + resp = append(resp, TempFilter{ | |
343 | + Type: rset.Row[0].(string), | |
344 | + Label: rset.Row[1].(string), | |
345 | + DefaultValues: rset.Row[2].(string), | |
346 | + }) | |
347 | + } | |
348 | + if rset.Err != nil { | |
349 | + return resp, rset.Err | |
350 | + } | |
351 | + return resp, nil | |
352 | +} | |
353 | + | |
354 | +func getListGraph(db *ora.Ses, objType string) ([]ListGraph, error) { | |
355 | + resp := make([]ListGraph, 0) | |
356 | + var err error | |
357 | + var stmt *ora.Stmt | |
358 | + query := `SELECT | |
359 | + OBJECT_TYPE, X_FIELD, Y_FIELD, GROUP_FIELD, LABEL | |
360 | + FROM LIST_GRAPHS | |
361 | + WHERE OBJECT_TYPE = '` + objType + `'` | |
362 | + | |
363 | + stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S) | |
364 | + if err != nil { | |
365 | + return resp, err | |
366 | + } | |
367 | + defer stmt.Close() | |
368 | + | |
369 | + rset, err := stmt.Qry() | |
370 | + if err != nil { | |
371 | + return resp, err | |
372 | + } | |
373 | + for rset.Next() { | |
374 | + resp = append(resp, ListGraph{ | |
375 | + ObjectType: rset.Row[0].(string), | |
376 | + X: rset.Row[1].(string), | |
377 | + Y: rset.Row[2].(string), | |
378 | + GroupField: rset.Row[3].(string), | |
379 | + Label: rset.Row[4].(string), | |
380 | + }) | |
381 | + } | |
382 | + if rset.Err != nil { | |
383 | + return resp, rset.Err | |
384 | + } | |
385 | + return resp, nil | |
386 | +} | |
387 | + | |
388 | +func getListOptions(db *ora.Ses, objType string) (ListOptions, error) { | |
389 | + var resp ListOptions | |
390 | + var err error | |
391 | + var stmt *ora.Stmt | |
392 | + query := `SELECT | |
393 | + GLOBAL_FILTER, LOCAL_FILTER, REMOTE_FILTER, PAGINATION, | |
394 | + PAGE_SIZE, PIVOT, DETAIL | |
395 | + FROM LIST_CONFIG | |
396 | + WHERE OBJECT_TYPE = '` + objType + `'` | |
397 | + | |
398 | + stmt, err = db.Prep(query, ora.U32, ora.U32, ora.U32, ora.U32, | |
399 | + ora.U64, ora.U64, ora.U32) | |
400 | + if err != nil { | |
401 | + return ListOptions{}, err | |
402 | + } | |
403 | + defer stmt.Close() | |
404 | + | |
405 | + rset, err := stmt.Qry() | |
406 | + if err != nil { | |
407 | + return ListOptions{}, err | |
408 | + } | |
409 | + if rset.Next() { | |
410 | + resp.GlobalFilter = rset.Row[0].(uint32) != 0 | |
411 | + resp.LocalFilters = rset.Row[1].(uint32) != 0 | |
412 | + resp.RemoteFilters = rset.Row[2].(uint32) != 0 | |
413 | + resp.Pagination = rset.Row[3].(uint32) != 0 | |
414 | + resp.PageSize = rset.Row[4].(uint64) | |
415 | + resp.Pivot = rset.Row[5].(uint64) != 0 | |
416 | + resp.Detail = rset.Row[6].(uint32) != 0 | |
417 | + } | |
418 | + if rset.Err != nil { | |
419 | + return ListOptions{}, rset.Err | |
420 | + } | |
421 | + return resp, nil | |
422 | +} | |
423 | + | |
424 | +func getListParent(db *ora.Ses, objType string) ([]ListParentNode, error) { | |
425 | + resp := make([]ListParentNode, 0) | |
426 | + var err error | |
427 | + var stmt *ora.Stmt | |
428 | + query := `SELECT | |
429 | + PARENT_OBJECT_TYPE, PARENT_LABEL_FIELD, PARENT_FILTER_FIELD | |
430 | + FROM LIST_CONFIG_CHILD | |
431 | + WHERE OBJECT_TYPE = '` + objType + `'` | |
432 | + | |
433 | + stmt, err = db.Prep(query, ora.S, ora.S, ora.S) | |
434 | + if err != nil { | |
435 | + return resp, err | |
436 | + } | |
437 | + defer stmt.Close() | |
438 | + | |
439 | + rset, err := stmt.Qry() | |
440 | + if err != nil { | |
441 | + return resp, err | |
442 | + } | |
443 | + for rset.Next() { | |
444 | + resp = append(resp, ListParentNode{ | |
445 | + ObjectType: rset.Row[0].(string), | |
446 | + LabelField: rset.Row[1].(string), | |
447 | + FilterField: rset.Row[2].(string), | |
448 | + }) | |
449 | + } | |
450 | + if rset.Err != nil { | |
451 | + return nil, rset.Err | |
452 | + } | |
453 | + | |
454 | + return resp, nil | |
455 | +} | |
456 | + | |
457 | +func getListPivot(db *ora.Ses, objType string) ([]ListPivot, error) { | |
458 | + resp := make([]ListPivot, 0) | |
459 | + var err error | |
460 | + var stmt *ora.Stmt | |
461 | + query := `SELECT | |
462 | + OBJECT_TYPE, GROUP_FIELD, DISTINCT_FIELD, VALUE_FIELD | |
463 | + FROM LIST_PIVOTS | |
464 | + WHERE OBJECT_TYPE = '` + objType + `'` | |
465 | + | |
466 | + stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S) | |
467 | + if err != nil { | |
468 | + return resp, err | |
469 | + } | |
470 | + defer stmt.Close() | |
471 | + | |
472 | + rset, err := stmt.Qry() | |
473 | + if err != nil { | |
474 | + return resp, err | |
475 | + } | |
476 | + for rset.Next() { | |
477 | + resp = append(resp, ListPivot{ | |
478 | + ObjectType: rset.Row[0].(string), | |
479 | + GroupField: rset.Row[1].(string), | |
480 | + DistinctField: rset.Row[2].(string), | |
481 | + Value: rset.Row[3].(string), | |
482 | + }) | |
483 | + } | |
484 | + if rset.Err != nil { | |
485 | + return nil, rset.Err | |
486 | + } | |
487 | + | |
488 | + return resp, nil | |
489 | +} | |
490 | + | |
491 | +func getListDetails(db *ora.Ses, objType string) (ListDetails, error) { | |
492 | + var resp ListDetails | |
493 | + var err error | |
494 | + var stmt *ora.Stmt | |
495 | + query := `SELECT | |
496 | + OBJECT_TYPE, PARENT_OBJECT_TYPE, PARENT_FILTER_FIELD, SINGLE_DETAIL | |
497 | + FROM LIST_CONFIG_DETAIL | |
498 | + WHERE PARENT_OBJECT_TYPE = '` + objType + `'` | |
499 | + | |
500 | + stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.U32) | |
501 | + if err != nil { | |
502 | + return resp, err | |
503 | + } | |
504 | + defer stmt.Close() | |
505 | + | |
506 | + rset, err := stmt.Qry() | |
507 | + if err != nil { | |
508 | + return resp, err | |
509 | + } | |
510 | + if rset.Next() { | |
511 | + resp.ObjectType = rset.Row[0].(string) | |
512 | + resp.ParentObjectType = rset.Row[1].(string) | |
513 | + resp.ParentFilterField = rset.Row[2].(string) | |
514 | + resp.SingleDetail = rset.Row[3].(uint32) != 0 | |
515 | + } | |
516 | + if rset.Err != nil { | |
517 | + return resp, rset.Err | |
518 | + } | |
519 | + | |
520 | + return resp, nil | |
521 | +} | ... | ... |
select_config.go
... | ... | @@ -0,0 +1,54 @@ |
1 | +package restutility | |
2 | + | |
3 | +import ( | |
4 | + "gopkg.in/rana/ora.v3" | |
5 | +) | |
6 | + | |
7 | +type SelectConfig struct { | |
8 | + ListObjType string `json:"listObjectType"` | |
9 | + ObjType string `json:"objectType"` | |
10 | + Type string `json:"type"` | |
11 | + IdField string `json:"idField"` | |
12 | + LabelField string `json:"labelField"` | |
13 | + ValueField string `json:"valueField"` | |
14 | +} | |
15 | + | |
16 | +func GetSelectConfig(db *ora.Ses, otype string) ([]SelectConfig, error) { | |
17 | + resp := make([]SelectConfig, 0) | |
18 | + var err error | |
19 | + var stmt *ora.Stmt | |
20 | + query := `SELECT a.LIST_OBJECT_TYPE, a.OBJECT_TYPE, a.ID_FIELD, | |
21 | + a.LABEL_FIELD, a.TYPE, b.FIELD | |
22 | + FROM LIST_SELECT_CONFIG a, LIST_VALUE_FIELD b | |
23 | + WHERE a.LIST_OBJECT_TYPE` + otype + ` | |
24 | + AND b.LIST_TYPE = a.LIST_OBJECT_TYPE | |
25 | + AND b.OBJECT_TYPE = a.OBJECT_TYPE` | |
26 | + | |
27 | + stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S, ora.S, | |
28 | + ora.S) | |
29 | + defer stmt.Close() | |
30 | + if err != nil { | |
31 | + return nil, err | |
32 | + } | |
33 | + | |
34 | + rset, err := stmt.Qry() | |
35 | + if err != nil { | |
36 | + return nil, err | |
37 | + } | |
38 | + for rset.Next() { | |
39 | + resp = append(resp, SelectConfig{ | |
40 | + ListObjType: rset.Row[0].(string), | |
41 | + ObjType: rset.Row[1].(string), | |
42 | + IdField: rset.Row[2].(string), | |
43 | + LabelField: rset.Row[3].(string), | |
44 | + Type: rset.Row[4].(string), | |
45 | + ValueField: rset.Row[5].(string), | |
46 | + }) | |
47 | + } | |
48 | + if rset.Err != nil { | |
49 | + return nil, rset.Err | |
50 | + } | |
51 | + | |
52 | + return resp, nil | |
53 | + | |
54 | +} | ... | ... |
tables_utility.go
... | ... | @@ -3,6 +3,10 @@ package restutility |
3 | 3 | import ( |
4 | 4 | "encoding/json" |
5 | 5 | "errors" |
6 | + "gopkg.in/rana/ora.v3" | |
7 | + "io" | |
8 | + "io/ioutil" | |
9 | + "fmt" | |
6 | 10 | ) |
7 | 11 | |
8 | 12 | type TableConfig struct { |
... | ... | @@ -82,7 +86,8 @@ func (tl TableConfig) LoadCorrelations(tableType string) []CorrelationField { |
82 | 86 | var _tables TableConfig |
83 | 87 | var _prevProject string |
84 | 88 | |
85 | -func InitTables(jsonbuf []byte) error { | |
89 | +func InitTables(db *ora.Ses, project string) error { | |
90 | + jsonbuf, _ := fetchTablesConfig(db, EqualQuotes(project)) | |
86 | 91 | json.Unmarshal(jsonbuf, &_tables.Tables) |
87 | 92 | if len(_tables.Tables) == 0 { |
88 | 93 | return errors.New("tables config is corrupt") |
... | ... | @@ -90,6 +95,34 @@ func InitTables(jsonbuf []byte) error { |
90 | 95 | return nil |
91 | 96 | } |
92 | 97 | |
98 | +func fetchTablesConfig(db *ora.Ses, project string) ([]byte, error) { | |
99 | + stmt, err := db.Prep(`SELECT | |
100 | + JSON_CLOB | |
101 | + FROM TABLES_CONFIG | |
102 | + WHERE PROJEKAT` + project, ora.S) | |
103 | + defer stmt.Close() | |
104 | + | |
105 | + if err != nil { | |
106 | + return nil, err | |
107 | + } | |
108 | + | |
109 | + rset, err := stmt.Qry() | |
110 | + if err != nil { | |
111 | + return nil, err | |
112 | + } | |
113 | + | |
114 | + bytes := make([]byte, 0) | |
115 | + if rset.Next() { | |
116 | + lob := rset.Row[0].(io.Reader) | |
117 | + bytes, err = ioutil.ReadAll(lob) | |
118 | + if err != nil { | |
119 | + fmt.Printf("mega error: %v\n", err) | |
120 | + } | |
121 | + } | |
122 | + | |
123 | + return bytes, nil | |
124 | +} | |
125 | + | |
93 | 126 | func loadTable(table string) JSONParams { |
94 | 127 | return NewJSONParams(_tables.LoadTranslations(table), |
95 | 128 | _tables.LoadFields(table), | ... | ... |