Commit 812040e296e15d0637296dfec2baf1d38ccd3cb3

Authored by Marko Tikvić
1 parent a392b07b62
Exists in master and in 1 other branch v2

hmmm

Showing 1 changed file with 4 additions and 2 deletions   Show diff stats
1 package restutility 1 package restutility
2 2
3 import ( 3 import (
4 "gopkg.in/rana/ora.v3" 4 "gopkg.in/rana/ora.v3"
5 ) 5 )
6 6
7 type ListOptions struct { 7 type ListOptions struct {
8 GlobalFilter bool `json:"globalFilter"` 8 GlobalFilter bool `json:"globalFilter"`
9 LocalFilters bool `json:"localFilters"` 9 LocalFilters bool `json:"localFilters"`
10 RemoteFilters bool `json:"remoteFilters"` 10 RemoteFilters bool `json:"remoteFilters"`
11 Pagination bool `json:"pagination"` 11 Pagination bool `json:"pagination"`
12 PageSize uint64 `json:"pageSize"` 12 PageSize uint64 `json:"pageSize"`
13 Pivot bool `json:"pivot"` 13 Pivot bool `json:"pivot"`
14 Detail bool `json:"detail"` 14 Detail bool `json:"detail"`
15 Total bool `json:"total"`
15 } 16 }
16 17
17 type ListFilter struct { 18 type ListFilter struct {
18 Position uint32 `json:"-"` 19 Position uint32 `json:"-"`
19 ObjectType string `json:"-"` 20 ObjectType string `json:"-"`
20 FiltersField string `json:"filtersField"` 21 FiltersField string `json:"filtersField"`
21 DefaultValues string `json:"defaultValues"` 22 DefaultValues string `json:"defaultValues"`
22 FiltersType string `json:"filtersType"` 23 FiltersType string `json:"filtersType"`
23 FiltersLabel string `json:"filtersLabel"` 24 FiltersLabel string `json:"filtersLabel"`
24 DropdownConfig Dropdown `json:"dropdownConfig"` 25 DropdownConfig Dropdown `json:"dropdownConfig"`
25 } 26 }
26 27
27 type Dropdown struct { 28 type Dropdown struct {
28 ObjectType string `json:"objectType"` 29 ObjectType string `json:"objectType"`
29 FiltersField string `json:"filtersField"` 30 FiltersField string `json:"filtersField"`
30 IdField string `json:"idField"` 31 IdField string `json:"idField"`
31 LabelField string `json:"labelField"` 32 LabelField string `json:"labelField"`
32 33
33 } 34 }
34 35
35 type ListGraph struct { 36 type ListGraph struct {
36 ObjectType string `json:"objectType"` 37 ObjectType string `json:"objectType"`
37 X string `json:"xField"` 38 X string `json:"xField"`
38 Y string `json:"yField"` 39 Y string `json:"yField"`
39 GroupField string `json:"groupField"` 40 GroupField string `json:"groupField"`
40 Label string `json:"label"` 41 Label string `json:"label"`
41 } 42 }
42 43
43 type ListActions struct { 44 type ListActions struct {
44 Create bool `json:"create"` 45 Create bool `json:"create"`
45 Update bool `json:"update"` 46 Update bool `json:"update"`
46 Delete bool `json:"delete"` 47 Delete bool `json:"delete"`
47 Export bool `json:"export"` 48 Export bool `json:"export"`
48 Print bool `json:"print"` 49 Print bool `json:"print"`
49 Graph bool `json:"graph"` 50 Graph bool `json:"graph"`
50 } 51 }
51 52
52 type ListNavNode struct { 53 type ListNavNode struct {
53 ObjectType string `json:"objectType"` 54 ObjectType string `json:"objectType"`
54 LabelField string `json:"label"` 55 LabelField string `json:"label"`
55 Icon string `json:"icon"` 56 Icon string `json:"icon"`
56 ParentObjectType string `json:"parentObjectType"` 57 ParentObjectType string `json:"parentObjectType"`
57 ParentIdField string `json:"parentIdField"` 58 ParentIdField string `json:"parentIdField"`
58 } 59 }
59 60
60 type ListParentNode struct { 61 type ListParentNode struct {
61 ObjectType string `json:"objectType"` 62 ObjectType string `json:"objectType"`
62 LabelField string `json:"labelField"` 63 LabelField string `json:"labelField"`
63 FilterField string `json:"filterField"` 64 FilterField string `json:"filterField"`
64 } 65 }
65 66
66 type ListPivot struct { 67 type ListPivot struct {
67 ObjectType string `json:"objectType"` 68 ObjectType string `json:"objectType"`
68 GroupField string `json:"groupField"` 69 GroupField string `json:"groupField"`
69 DistinctField string `json:"distinctField"` 70 DistinctField string `json:"distinctField"`
70 Value string `json:"valueField"` 71 Value string `json:"valueField"`
71 } 72 }
72 73
73 type ListDetails struct { 74 type ListDetails struct {
74 ObjectType string `json:"objectType"` 75 ObjectType string `json:"objectType"`
75 ParentObjectType string `json:"parentObjectType"` 76 ParentObjectType string `json:"parentObjectType"`
76 ParentFilterField string `json:"parentFilterField"` 77 ParentFilterField string `json:"parentFilterField"`
77 SingleDetail bool `json:"singleDetail"` 78 SingleDetail bool `json:"singleDetail"`
78 } 79 }
79 80
80 type ListConfig struct { 81 type ListConfig struct {
81 ObjectType string `json:"objectType"` 82 ObjectType string `json:"objectType"`
82 Title string `json:"title"` 83 Title string `json:"title"`
83 LazyLoad bool `json:"lazyLoad"` 84 LazyLoad bool `json:"lazyLoad"`
84 InlineEdit bool `json:"inlineEdit"` 85 InlineEdit bool `json:"inlineEdit"`
85 Options ListOptions `json:"options"` 86 Options ListOptions `json:"options"`
86 Filters []ListFilter `json:"defaultFilters"` 87 Filters []ListFilter `json:"defaultFilters"`
87 Graphs []ListGraph `json:"graphs"` 88 Graphs []ListGraph `json:"graphs"`
88 Actions ListActions `json:"actions"` 89 Actions ListActions `json:"actions"`
89 Parent []ListParentNode `json:"parent"` 90 Parent []ListParentNode `json:"parent"`
90 Navigation []ListNavNode `json:"navigation"` 91 Navigation []ListNavNode `json:"navigation"`
91 Pivots []ListPivot `json:"pivots"` 92 Pivots []ListPivot `json:"pivots"`
92 Details ListDetails `json:"details"` 93 Details ListDetails `json:"details"`
93 } 94 }
94 95
95 func GetListConfig(db *ora.Ses, objType string) (ListConfig, error) { 96 func GetListConfig(db *ora.Ses, objType string) (ListConfig, error) {
96 resp := NewDefaultList(objType) 97 resp := NewDefaultList(objType)
97 var err error 98 var err error
98 99
99 err = setListParams(db, &resp, objType) 100 err = setListParams(db, &resp, objType)
100 resp.Navigation, err = getListNavigation(db, objType) 101 resp.Navigation, err = getListNavigation(db, objType)
101 resp.Actions, err = getListActions(db, objType) 102 resp.Actions, err = getListActions(db, objType)
102 resp.Filters, err = getListFilters(db, objType) 103 resp.Filters, err = getListFilters(db, objType)
103 resp.Options, err = getListOptions(db, objType) 104 resp.Options, err = getListOptions(db, objType)
104 resp.Parent, err = getListParent(db, objType) 105 resp.Parent, err = getListParent(db, objType)
105 resp.Graphs, err = getListGraph(db, objType) 106 resp.Graphs, err = getListGraph(db, objType)
106 resp.Pivots, err = getListPivot(db, objType) 107 resp.Pivots, err = getListPivot(db, objType)
107 resp.Details, err = getListDetails(db, objType) 108 resp.Details, err = getListDetails(db, objType)
108 109
109 if err != nil { 110 if err != nil {
110 return ListConfig{}, err 111 return ListConfig{}, err
111 } 112 }
112 113
113 return resp, nil 114 return resp, nil
114 } 115 }
115 116
116 func GetListConfigObjectIdField(db *ora.Ses, otype string) string { 117 func GetListConfigObjectIdField(db *ora.Ses, otype string) string {
117 var resp string 118 var resp string
118 var err error 119 var err error
119 var stmt *ora.Stmt 120 var stmt *ora.Stmt
120 121
121 stmt, err = db.Prep(`SELECT 122 stmt, err = db.Prep(`SELECT
122 ID_FIELD 123 ID_FIELD
123 FROM LIST_CONFIG_ID_FIELD 124 FROM LIST_CONFIG_ID_FIELD
124 WHERE OBJECT_TYPE = '` + otype + `'`, 125 WHERE OBJECT_TYPE = '` + otype + `'`,
125 ora.S) 126 ora.S)
126 127
127 defer stmt.Close() 128 defer stmt.Close()
128 129
129 if err != nil { 130 if err != nil {
130 return "" 131 return ""
131 } 132 }
132 133
133 rset, err := stmt.Qry() 134 rset, err := stmt.Qry()
134 if rset.Next() { 135 if rset.Next() {
135 resp = rset.Row[0].(string) 136 resp = rset.Row[0].(string)
136 } 137 }
137 138
138 if rset.Err != nil { 139 if rset.Err != nil {
139 return "" 140 return ""
140 } 141 }
141 142
142 return resp 143 return resp
143 } 144 }
144 145
145 func NewDefaultList(objType string) ListConfig { 146 func NewDefaultList(objType string) ListConfig {
146 list := ListConfig{ 147 list := ListConfig{
147 ObjectType: objType, 148 ObjectType: objType,
148 Title: objType, 149 Title: objType,
149 LazyLoad: false, 150 LazyLoad: false,
150 Options: ListOptions{ 151 Options: ListOptions{
151 GlobalFilter: true, 152 GlobalFilter: true,
152 LocalFilters: true, 153 LocalFilters: true,
153 RemoteFilters: false, 154 RemoteFilters: false,
154 Pagination: true, 155 Pagination: true,
155 PageSize: 20, 156 PageSize: 20,
156 }, 157 },
157 Filters: nil, 158 Filters: nil,
158 Actions: ListActions{ 159 Actions: ListActions{
159 Create: false, 160 Create: false,
160 Update: false, 161 Update: false,
161 Delete: false, 162 Delete: false,
162 Export: false, 163 Export: false,
163 Print: false, 164 Print: false,
164 Graph: false, 165 Graph: false,
165 }, 166 },
166 Parent: nil, 167 Parent: nil,
167 Navigation: nil, 168 Navigation: nil,
168 } 169 }
169 170
170 return list 171 return list
171 } 172 }
172 173
173 func setListParams(db *ora.Ses, list *ListConfig, objType string) error { 174 func setListParams(db *ora.Ses, list *ListConfig, objType string) error {
174 var err error 175 var err error
175 var stmt *ora.Stmt 176 var stmt *ora.Stmt
176 query := `SELECT 177 query := `SELECT
177 OBJECT_TYPE, TITLE, LAZY_LOAD, INLINE_EDIT 178 OBJECT_TYPE, TITLE, LAZY_LOAD, INLINE_EDIT
178 FROM LIST_CONFIG 179 FROM LIST_CONFIG
179 WHERE OBJECT_TYPE = '` + objType + `'` 180 WHERE OBJECT_TYPE = '` + objType + `'`
180 181
181 stmt, err = db.Prep(query, ora.S, ora.S, ora.U32, ora.U32) 182 stmt, err = db.Prep(query, ora.S, ora.S, ora.U32, ora.U32)
182 if err != nil { 183 if err != nil {
183 return err 184 return err
184 } 185 }
185 defer stmt.Close() 186 defer stmt.Close()
186 187
187 rset, err := stmt.Qry() 188 rset, err := stmt.Qry()
188 if err != nil { 189 if err != nil {
189 return err 190 return err
190 } 191 }
191 if rset.Next() { 192 if rset.Next() {
192 otype := rset.Row[0].(string) 193 otype := rset.Row[0].(string)
193 if otype != "" { 194 if otype != "" {
194 list.ObjectType = otype 195 list.ObjectType = otype
195 } 196 }
196 197
197 title := rset.Row[1].(string) 198 title := rset.Row[1].(string)
198 if title != "" { 199 if title != "" {
199 list.Title = title 200 list.Title = title
200 } 201 }
201 list.LazyLoad = rset.Row[2].(uint32) != 0 202 list.LazyLoad = rset.Row[2].(uint32) != 0
202 list.InlineEdit = rset.Row[3].(uint32) != 0 203 list.InlineEdit = rset.Row[3].(uint32) != 0
203 } 204 }
204 if rset.Err != nil { 205 if rset.Err != nil {
205 return rset.Err 206 return rset.Err
206 } 207 }
207 return nil 208 return nil
208 } 209 }
209 210
210 func getListNavigation(db *ora.Ses, listObjType string) ([]ListNavNode, error) { 211 func getListNavigation(db *ora.Ses, listObjType string) ([]ListNavNode, error) {
211 resp := make([]ListNavNode, 0) 212 resp := make([]ListNavNode, 0)
212 var err error 213 var err error
213 var stmt *ora.Stmt 214 var stmt *ora.Stmt
214 query := `SELECT 215 query := `SELECT
215 a.OBJECT_TYPE, a.PARENT_OBJECT_TYPE, a.LABEL, a.ICON, b.PARENT_ID_FIELD, b.RB 216 a.OBJECT_TYPE, a.PARENT_OBJECT_TYPE, a.LABEL, a.ICON, b.PARENT_ID_FIELD, b.RB
216 FROM LIST_CONFIG_NAVIGATION b 217 FROM LIST_CONFIG_NAVIGATION b
217 JOIN LIST_CONFIG_CHILD a ON b.PARENT_CHILD_ID = a.PARENT_CHILD_ID 218 JOIN LIST_CONFIG_CHILD a ON b.PARENT_CHILD_ID = a.PARENT_CHILD_ID
218 WHERE b.LIST_OBJECT_TYPE = '`+listObjType+`' 219 WHERE b.LIST_OBJECT_TYPE = '`+listObjType+`'
219 ORDER BY b.RB ASC` 220 ORDER BY b.RB ASC`
220 221
221 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S, ora.S) 222 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S, ora.S)
222 if err != nil { 223 if err != nil {
223 return resp, err 224 return resp, err
224 } 225 }
225 defer stmt.Close() 226 defer stmt.Close()
226 227
227 rset, err := stmt.Qry() 228 rset, err := stmt.Qry()
228 if err != nil { 229 if err != nil {
229 return resp, err 230 return resp, err
230 } 231 }
231 for rset.Next() { 232 for rset.Next() {
232 resp = append(resp, ListNavNode{ 233 resp = append(resp, ListNavNode{
233 ObjectType: rset.Row[0].(string), 234 ObjectType: rset.Row[0].(string),
234 ParentObjectType: rset.Row[1].(string), 235 ParentObjectType: rset.Row[1].(string),
235 LabelField: rset.Row[2].(string), 236 LabelField: rset.Row[2].(string),
236 Icon: rset.Row[3].(string), 237 Icon: rset.Row[3].(string),
237 ParentIdField: rset.Row[4].(string), 238 ParentIdField: rset.Row[4].(string),
238 }) 239 })
239 } 240 }
240 if rset.Err != nil { 241 if rset.Err != nil {
241 return nil, rset.Err 242 return nil, rset.Err
242 } 243 }
243 244
244 return resp, nil 245 return resp, nil
245 } 246 }
246 247
247 func getListActions(db *ora.Ses, objType string) (ListActions, error) { 248 func getListActions(db *ora.Ses, objType string) (ListActions, error) {
248 var resp ListActions 249 var resp ListActions
249 var err error 250 var err error
250 var stmt *ora.Stmt 251 var stmt *ora.Stmt
251 query := `SELECT 252 query := `SELECT
252 ACTION_CREATE, ACTION_UPDATE, ACTION_DELETE, ACTION_EXPORT, 253 ACTION_CREATE, ACTION_UPDATE, ACTION_DELETE, ACTION_EXPORT,
253 ACTION_PRINT, ACTION_GRAPH 254 ACTION_PRINT, ACTION_GRAPH
254 FROM LIST_CONFIG 255 FROM LIST_CONFIG
255 WHERE OBJECT_TYPE = '` + objType + `'` 256 WHERE OBJECT_TYPE = '` + objType + `'`
256 257
257 stmt, err = db.Prep(query, ora.U32, ora.U32, ora.U32, ora.U32, 258 stmt, err = db.Prep(query, ora.U32, ora.U32, ora.U32, ora.U32,
258 ora.U32, ora.U32) 259 ora.U32, ora.U32)
259 if err != nil { 260 if err != nil {
260 return ListActions{}, err 261 return ListActions{}, err
261 } 262 }
262 defer stmt.Close() 263 defer stmt.Close()
263 264
264 rset, err := stmt.Qry() 265 rset, err := stmt.Qry()
265 if err != nil { 266 if err != nil {
266 return ListActions{}, err 267 return ListActions{}, err
267 } 268 }
268 if rset.Next() { 269 if rset.Next() {
269 resp.Create = rset.Row[0].(uint32) != 0 270 resp.Create = rset.Row[0].(uint32) != 0
270 resp.Update = rset.Row[1].(uint32) != 0 271 resp.Update = rset.Row[1].(uint32) != 0
271 resp.Delete = rset.Row[2].(uint32) != 0 272 resp.Delete = rset.Row[2].(uint32) != 0
272 resp.Export = rset.Row[3].(uint32) != 0 273 resp.Export = rset.Row[3].(uint32) != 0
273 resp.Print = rset.Row[4].(uint32) != 0 274 resp.Print = rset.Row[4].(uint32) != 0
274 resp.Graph = rset.Row[5].(uint32) != 0 275 resp.Graph = rset.Row[5].(uint32) != 0
275 } 276 }
276 if rset.Err != nil { 277 if rset.Err != nil {
277 return ListActions{}, rset.Err 278 return ListActions{}, rset.Err
278 } 279 }
279 return resp, nil 280 return resp, nil
280 } 281 }
281 282
282 func getListFilters(db *ora.Ses, objType string) ([]ListFilter, error) { 283 func getListFilters(db *ora.Ses, objType string) ([]ListFilter, error) {
283 resp := make([]ListFilter, 0) 284 resp := make([]ListFilter, 0)
284 filtersFields, err := getFilterFieldsAndPosition(db, objType) 285 filtersFields, err := getFilterFieldsAndPosition(db, objType)
285 if err != nil { 286 if err != nil {
286 return nil, err 287 return nil, err
287 } 288 }
288 for field, pos := range filtersFields { 289 for field, pos := range filtersFields {
289 filters, _ := getFiltersByFilterField(db, field) 290 filters, _ := getFiltersByFilterField(db, field)
290 for _, filter := range filters { 291 for _, filter := range filters {
291 var f ListFilter 292 var f ListFilter
292 f.Position = pos 293 f.Position = pos
293 f.ObjectType = objType 294 f.ObjectType = objType
294 f.FiltersField = field 295 f.FiltersField = field
295 f.DefaultValues = filter.DefaultValues 296 f.DefaultValues = filter.DefaultValues
296 f.FiltersLabel = filter.Label 297 f.FiltersLabel = filter.Label
297 f.FiltersType = filter.Type 298 f.FiltersType = filter.Type
298 if filter.Type == "dropdown" { 299 if filter.Type == "dropdown" {
299 f.DropdownConfig, err = getFilterDropdownConfig(db, field) 300 f.DropdownConfig, err = getFilterDropdownConfig(db, field)
300 if err != nil { 301 if err != nil {
301 return nil, err 302 return nil, err
302 } 303 }
303 } 304 }
304 resp = append(resp, f) 305 resp = append(resp, f)
305 } 306 }
306 } 307 }
307 308
308 sortFilters(resp) 309 sortFilters(resp)
309 310
310 return resp, nil 311 return resp, nil
311 } 312 }
312 313
313 func getFilterFieldsAndPosition(db *ora.Ses, objType string) (map[string]uint32, error) { 314 func getFilterFieldsAndPosition(db *ora.Ses, objType string) (map[string]uint32, error) {
314 filtersField := make(map[string]uint32, 0) 315 filtersField := make(map[string]uint32, 0)
315 var err error 316 var err error
316 var stmt *ora.Stmt 317 var stmt *ora.Stmt
317 query := `SELECT 318 query := `SELECT
318 FILTERS_FIELD, RB 319 FILTERS_FIELD, RB
319 FROM LIST_CONFIG_FILTERS 320 FROM LIST_CONFIG_FILTERS
320 WHERE OBJECT_TYPE = '` + objType + `'` 321 WHERE OBJECT_TYPE = '` + objType + `'`
321 322
322 stmt, err = db.Prep(query, ora.S, ora.U32) 323 stmt, err = db.Prep(query, ora.S, ora.U32)
323 if err != nil { 324 if err != nil {
324 return nil, err 325 return nil, err
325 } 326 }
326 defer stmt.Close() 327 defer stmt.Close()
327 328
328 rset, err := stmt.Qry() 329 rset, err := stmt.Qry()
329 if err != nil { 330 if err != nil {
330 return nil, err 331 return nil, err
331 } 332 }
332 for rset.Next() { 333 for rset.Next() {
333 filtersField[rset.Row[0].(string)] = rset.Row[1].(uint32) 334 filtersField[rset.Row[0].(string)] = rset.Row[1].(uint32)
334 } 335 }
335 if rset.Err != nil { 336 if rset.Err != nil {
336 return nil, rset.Err 337 return nil, rset.Err
337 } 338 }
338 return filtersField, nil 339 return filtersField, nil
339 } 340 }
340 341
341 type _filter struct { 342 type _filter struct {
342 DefaultValues string 343 DefaultValues string
343 Label string 344 Label string
344 Type string 345 Type string
345 } 346 }
346 347
347 func getFiltersByFilterField(db *ora.Ses, filtersField string) ([]_filter, error) { 348 func getFiltersByFilterField(db *ora.Ses, filtersField string) ([]_filter, error) {
348 resp := make([]_filter, 0) 349 resp := make([]_filter, 0)
349 var err error 350 var err error
350 var stmt *ora.Stmt 351 var stmt *ora.Stmt
351 query := `SELECT 352 query := `SELECT
352 FILTERS_TYPE, FILTERS_LABEL, DEFAULT_VALUES 353 FILTERS_TYPE, FILTERS_LABEL, DEFAULT_VALUES
353 FROM LIST_FILTERS_FIELD 354 FROM LIST_FILTERS_FIELD
354 WHERE FILTERS_FIELD = '` + filtersField + `'` 355 WHERE FILTERS_FIELD = '` + filtersField + `'`
355 356
356 stmt, err = db.Prep(query, ora.S, ora.S, ora.S) 357 stmt, err = db.Prep(query, ora.S, ora.S, ora.S)
357 if err != nil { 358 if err != nil {
358 return resp, err 359 return resp, err
359 } 360 }
360 defer stmt.Close() 361 defer stmt.Close()
361 362
362 rset, err := stmt.Qry() 363 rset, err := stmt.Qry()
363 if err != nil { 364 if err != nil {
364 return resp, err 365 return resp, err
365 } 366 }
366 for rset.Next() { 367 for rset.Next() {
367 resp = append(resp, _filter{ 368 resp = append(resp, _filter{
368 Type: rset.Row[0].(string), 369 Type: rset.Row[0].(string),
369 Label: rset.Row[1].(string), 370 Label: rset.Row[1].(string),
370 DefaultValues: rset.Row[2].(string), 371 DefaultValues: rset.Row[2].(string),
371 }) 372 })
372 } 373 }
373 if rset.Err != nil { 374 if rset.Err != nil {
374 return resp, rset.Err 375 return resp, rset.Err
375 } 376 }
376 return resp, nil 377 return resp, nil
377 } 378 }
378 379
379 func getFilterDropdownConfig(db *ora.Ses, filtersField string) (Dropdown, error) { 380 func getFilterDropdownConfig(db *ora.Ses, filtersField string) (Dropdown, error) {
380 var resp Dropdown 381 var resp Dropdown
381 var err error 382 var err error
382 var stmt *ora.Stmt 383 var stmt *ora.Stmt
383 query := `SELECT 384 query := `SELECT
384 FILTERS_FIELD, OBJECT_TYPE, ID_FIELD, LABEL_FIELD 385 FILTERS_FIELD, OBJECT_TYPE, ID_FIELD, LABEL_FIELD
385 FROM LIST_DROPDOWN_FILTER 386 FROM LIST_DROPDOWN_FILTER
386 WHERE FILTERS_FIELD = '` + filtersField + `'` 387 WHERE FILTERS_FIELD = '` + filtersField + `'`
387 388
388 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S) 389 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S)
389 if err != nil { 390 if err != nil {
390 return resp, err 391 return resp, err
391 } 392 }
392 defer stmt.Close() 393 defer stmt.Close()
393 394
394 rset, err := stmt.Qry() 395 rset, err := stmt.Qry()
395 if err != nil { 396 if err != nil {
396 return resp, err 397 return resp, err
397 } 398 }
398 if rset.Next() { 399 if rset.Next() {
399 resp.FiltersField = rset.Row[0].(string) 400 resp.FiltersField = rset.Row[0].(string)
400 resp.ObjectType = rset.Row[1].(string) 401 resp.ObjectType = rset.Row[1].(string)
401 resp.IdField = rset.Row[2].(string) 402 resp.IdField = rset.Row[2].(string)
402 resp.LabelField = rset.Row[3].(string) 403 resp.LabelField = rset.Row[3].(string)
403 } 404 }
404 if rset.Err != nil { 405 if rset.Err != nil {
405 return resp, rset.Err 406 return resp, rset.Err
406 } 407 }
407 return resp, nil 408 return resp, nil
408 } 409 }
409 410
410 func sortFilters(filters []ListFilter) { 411 func sortFilters(filters []ListFilter) {
411 done := false 412 done := false
412 var temp ListFilter 413 var temp ListFilter
413 for !done { 414 for !done {
414 done = true 415 done = true
415 for i := 0; i < len(filters) - 1; i++ { 416 for i := 0; i < len(filters) - 1; i++ {
416 if filters[i].Position > filters[i+1].Position { 417 if filters[i].Position > filters[i+1].Position {
417 done = false 418 done = false
418 temp = filters[i] 419 temp = filters[i]
419 filters[i] = filters[i+1] 420 filters[i] = filters[i+1]
420 filters[i+1] = temp 421 filters[i+1] = temp
421 } 422 }
422 } 423 }
423 } 424 }
424 } 425 }
425 426
426 func getListGraph(db *ora.Ses, objType string) ([]ListGraph, error) { 427 func getListGraph(db *ora.Ses, objType string) ([]ListGraph, error) {
427 resp := make([]ListGraph, 0) 428 resp := make([]ListGraph, 0)
428 var err error 429 var err error
429 var stmt *ora.Stmt 430 var stmt *ora.Stmt
430 query := `SELECT 431 query := `SELECT
431 OBJECT_TYPE, X_FIELD, Y_FIELD, GROUP_FIELD, LABEL 432 OBJECT_TYPE, X_FIELD, Y_FIELD, GROUP_FIELD, LABEL
432 FROM LIST_GRAPHS 433 FROM LIST_GRAPHS
433 WHERE OBJECT_TYPE = '` + objType + `'` 434 WHERE OBJECT_TYPE = '` + objType + `'`
434 435
435 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S) 436 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S)
436 if err != nil { 437 if err != nil {
437 return resp, err 438 return resp, err
438 } 439 }
439 defer stmt.Close() 440 defer stmt.Close()
440 441
441 rset, err := stmt.Qry() 442 rset, err := stmt.Qry()
442 if err != nil { 443 if err != nil {
443 return resp, err 444 return resp, err
444 } 445 }
445 for rset.Next() { 446 for rset.Next() {
446 resp = append(resp, ListGraph{ 447 resp = append(resp, ListGraph{
447 ObjectType: rset.Row[0].(string), 448 ObjectType: rset.Row[0].(string),
448 X: rset.Row[1].(string), 449 X: rset.Row[1].(string),
449 Y: rset.Row[2].(string), 450 Y: rset.Row[2].(string),
450 GroupField: rset.Row[3].(string), 451 GroupField: rset.Row[3].(string),
451 Label: rset.Row[4].(string), 452 Label: rset.Row[4].(string),
452 }) 453 })
453 } 454 }
454 if rset.Err != nil { 455 if rset.Err != nil {
455 return resp, rset.Err 456 return resp, rset.Err
456 } 457 }
457 return resp, nil 458 return resp, nil
458 } 459 }
459 460
460 func getListOptions(db *ora.Ses, objType string) (ListOptions, error) { 461 func getListOptions(db *ora.Ses, objType string) (ListOptions, error) {
461 var resp ListOptions 462 var resp ListOptions
462 var err error 463 var err error
463 var stmt *ora.Stmt 464 var stmt *ora.Stmt
464 query := `SELECT 465 query := `SELECT
465 GLOBAL_FILTER, LOCAL_FILTER, REMOTE_FILTER, PAGINATION, 466 GLOBAL_FILTER, LOCAL_FILTER, REMOTE_FILTER, PAGINATION,
466 PAGE_SIZE, PIVOT, DETAIL 467 PAGE_SIZE, PIVOT, DETAIL, TOTAL
467 FROM LIST_CONFIG 468 FROM LIST_CONFIG
468 WHERE OBJECT_TYPE = '` + objType + `'` 469 WHERE OBJECT_TYPE = '` + objType + `'`
469 470
470 stmt, err = db.Prep(query, ora.U32, ora.U32, ora.U32, ora.U32, 471 stmt, err = db.Prep(query, ora.U32, ora.U32, ora.U32, ora.U32,
471 ora.U64, ora.U64, ora.U32) 472 ora.U64, ora.U64, ora.U32, ora.U32)
472 if err != nil { 473 if err != nil {
473 return ListOptions{}, err 474 return ListOptions{}, err
474 } 475 }
475 defer stmt.Close() 476 defer stmt.Close()
476 477
477 rset, err := stmt.Qry() 478 rset, err := stmt.Qry()
478 if err != nil { 479 if err != nil {
479 return ListOptions{}, err 480 return ListOptions{}, err
480 } 481 }
481 if rset.Next() { 482 if rset.Next() {
482 resp.GlobalFilter = rset.Row[0].(uint32) != 0 483 resp.GlobalFilter = rset.Row[0].(uint32) != 0
483 resp.LocalFilters = rset.Row[1].(uint32) != 0 484 resp.LocalFilters = rset.Row[1].(uint32) != 0
484 resp.RemoteFilters = rset.Row[2].(uint32) != 0 485 resp.RemoteFilters = rset.Row[2].(uint32) != 0
485 resp.Pagination = rset.Row[3].(uint32) != 0 486 resp.Pagination = rset.Row[3].(uint32) != 0
486 resp.PageSize = rset.Row[4].(uint64) 487 resp.PageSize = rset.Row[4].(uint64)
487 resp.Pivot = rset.Row[5].(uint64) != 0 488 resp.Pivot = rset.Row[5].(uint64) != 0
488 resp.Detail = rset.Row[6].(uint32) != 0 489 resp.Detail = rset.Row[6].(uint32) != 0
490 resp.Total = rset.Row[7].(uint32) != 0
489 } 491 }
490 if rset.Err != nil { 492 if rset.Err != nil {
491 return ListOptions{}, rset.Err 493 return ListOptions{}, rset.Err
492 } 494 }
493 return resp, nil 495 return resp, nil
494 } 496 }
495 497
496 func getListParent(db *ora.Ses, objType string) ([]ListParentNode, error) { 498 func getListParent(db *ora.Ses, objType string) ([]ListParentNode, error) {
497 resp := make([]ListParentNode, 0) 499 resp := make([]ListParentNode, 0)
498 var err error 500 var err error
499 var stmt *ora.Stmt 501 var stmt *ora.Stmt
500 query := `SELECT 502 query := `SELECT
501 PARENT_OBJECT_TYPE, PARENT_LABEL_FIELD, PARENT_FILTER_FIELD 503 PARENT_OBJECT_TYPE, PARENT_LABEL_FIELD, PARENT_FILTER_FIELD
502 FROM LIST_CONFIG_CHILD 504 FROM LIST_CONFIG_CHILD
503 WHERE OBJECT_TYPE = '` + objType + `'` 505 WHERE OBJECT_TYPE = '` + objType + `'`
504 506
505 stmt, err = db.Prep(query, ora.S, ora.S, ora.S) 507 stmt, err = db.Prep(query, ora.S, ora.S, ora.S)
506 if err != nil { 508 if err != nil {
507 return resp, err 509 return resp, err
508 } 510 }
509 defer stmt.Close() 511 defer stmt.Close()
510 512
511 rset, err := stmt.Qry() 513 rset, err := stmt.Qry()
512 if err != nil { 514 if err != nil {
513 return resp, err 515 return resp, err
514 } 516 }
515 for rset.Next() { 517 for rset.Next() {
516 resp = append(resp, ListParentNode{ 518 resp = append(resp, ListParentNode{
517 ObjectType: rset.Row[0].(string), 519 ObjectType: rset.Row[0].(string),
518 LabelField: rset.Row[1].(string), 520 LabelField: rset.Row[1].(string),
519 FilterField: rset.Row[2].(string), 521 FilterField: rset.Row[2].(string),
520 }) 522 })
521 } 523 }
522 if rset.Err != nil { 524 if rset.Err != nil {
523 return nil, rset.Err 525 return nil, rset.Err
524 } 526 }
525 527
526 return resp, nil 528 return resp, nil
527 } 529 }
528 530
529 func getListPivot(db *ora.Ses, objType string) ([]ListPivot, error) { 531 func getListPivot(db *ora.Ses, objType string) ([]ListPivot, error) {
530 resp := make([]ListPivot, 0) 532 resp := make([]ListPivot, 0)
531 var err error 533 var err error
532 var stmt *ora.Stmt 534 var stmt *ora.Stmt
533 query := `SELECT 535 query := `SELECT
534 OBJECT_TYPE, GROUP_FIELD, DISTINCT_FIELD, VALUE_FIELD 536 OBJECT_TYPE, GROUP_FIELD, DISTINCT_FIELD, VALUE_FIELD
535 FROM LIST_PIVOTS 537 FROM LIST_PIVOTS
536 WHERE OBJECT_TYPE = '` + objType + `'` 538 WHERE OBJECT_TYPE = '` + objType + `'`
537 539
538 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S) 540 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.S)
539 if err != nil { 541 if err != nil {
540 return resp, err 542 return resp, err
541 } 543 }
542 defer stmt.Close() 544 defer stmt.Close()
543 545
544 rset, err := stmt.Qry() 546 rset, err := stmt.Qry()
545 if err != nil { 547 if err != nil {
546 return resp, err 548 return resp, err
547 } 549 }
548 for rset.Next() { 550 for rset.Next() {
549 resp = append(resp, ListPivot{ 551 resp = append(resp, ListPivot{
550 ObjectType: rset.Row[0].(string), 552 ObjectType: rset.Row[0].(string),
551 GroupField: rset.Row[1].(string), 553 GroupField: rset.Row[1].(string),
552 DistinctField: rset.Row[2].(string), 554 DistinctField: rset.Row[2].(string),
553 Value: rset.Row[3].(string), 555 Value: rset.Row[3].(string),
554 }) 556 })
555 } 557 }
556 if rset.Err != nil { 558 if rset.Err != nil {
557 return nil, rset.Err 559 return nil, rset.Err
558 } 560 }
559 561
560 return resp, nil 562 return resp, nil
561 } 563 }
562 564
563 func getListDetails(db *ora.Ses, objType string) (ListDetails, error) { 565 func getListDetails(db *ora.Ses, objType string) (ListDetails, error) {
564 var resp ListDetails 566 var resp ListDetails
565 var err error 567 var err error
566 var stmt *ora.Stmt 568 var stmt *ora.Stmt
567 query := `SELECT 569 query := `SELECT
568 OBJECT_TYPE, PARENT_OBJECT_TYPE, PARENT_FILTER_FIELD, SINGLE_DETAIL 570 OBJECT_TYPE, PARENT_OBJECT_TYPE, PARENT_FILTER_FIELD, SINGLE_DETAIL
569 FROM LIST_CONFIG_DETAIL 571 FROM LIST_CONFIG_DETAIL
570 WHERE PARENT_OBJECT_TYPE = '` + objType + `'` 572 WHERE PARENT_OBJECT_TYPE = '` + objType + `'`
571 573
572 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.U32) 574 stmt, err = db.Prep(query, ora.S, ora.S, ora.S, ora.U32)
573 if err != nil { 575 if err != nil {
574 return resp, err 576 return resp, err
575 } 577 }
576 defer stmt.Close() 578 defer stmt.Close()
577 579
578 rset, err := stmt.Qry() 580 rset, err := stmt.Qry()
579 if err != nil { 581 if err != nil {
580 return resp, err 582 return resp, err
581 } 583 }
582 if rset.Next() { 584 if rset.Next() {
583 resp.ObjectType = rset.Row[0].(string) 585 resp.ObjectType = rset.Row[0].(string)
584 resp.ParentObjectType = rset.Row[1].(string) 586 resp.ParentObjectType = rset.Row[1].(string)
585 resp.ParentFilterField = rset.Row[2].(string) 587 resp.ParentFilterField = rset.Row[2].(string)
586 resp.SingleDetail = rset.Row[3].(uint32) != 0 588 resp.SingleDetail = rset.Row[3].(uint32) != 0
587 } 589 }
588 if rset.Err != nil { 590 if rset.Err != nil {
589 return resp, rset.Err 591 return resp, rset.Err
590 } 592 }
591 593
592 return resp, nil 594 return resp, nil
593 } 595 }
594 596