Commit 4c5e428df59643a636f5f45ae2d7688d20618127

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

removed rana/ora dependant parts from the package (need to be refactored using database/sql package)

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