comparison pkg/controllers/system.go @ 3625:a688a478e35f configuration

implemented configuration backend and frontend
author Markus Kottlaender <markus@intevation.de>
date Fri, 07 Jun 2019 12:53:41 +0200
parents 8a4fb02ee60a
children 6693be57b7a2
comparison
equal deleted inserted replaced
3624:3012d0b3badc 3625:a688a478e35f
15 15
16 import ( 16 import (
17 "bytes" 17 "bytes"
18 "database/sql" 18 "database/sql"
19 "fmt" 19 "fmt"
20 "encoding/json"
20 "io/ioutil" 21 "io/ioutil"
21 "net/http" 22 "net/http"
22 "strings" 23 "strings"
23 24
24 "gemma.intevation.de/gemma/pkg/config" 25 "gemma.intevation.de/gemma/pkg/config"
33 setFeatureColourSQL = `UPDATE systemconf.feature_colours 34 setFeatureColourSQL = `UPDATE systemconf.feature_colours
34 SET (r, g, b, a) = ($3, $4, $5, $6) 35 SET (r, g, b, a) = ($3, $4, $5, $6)
35 WHERE feature_name = $1 AND style_attr = $2` 36 WHERE feature_name = $1 AND style_attr = $2`
36 ) 37 )
37 38
39 const (
40 getSettingsSQL = `SELECT config_key, config_val
41 FROM sys_admin.system_config`
42 updateSettingSQL = `UPDATE sys_admin.system_config
43 SET config_val = $2
44 WHERE config_key = $1`
45 )
46
38 // System status end points 47 // System status end points
39 48
40 func showSystemLog( 49 func showSystemLog(
41 _ interface{}, req *http.Request, 50 _ interface{}, req *http.Request,
42 _ *sql.Conn, 51 _ *sql.Conn,
98 107
99 jr = JSONResult{Result: bytes.NewReader(data)} 108 jr = JSONResult{Result: bytes.NewReader(data)}
100 return 109 return
101 } 110 }
102 111
112 func getSystemSettings(
113 _ interface{},
114 req *http.Request,
115 conn *sql.Conn,
116 ) (jr JSONResult, err error) {
117
118 var rows *sql.Rows
119 if rows, err = conn.QueryContext(req.Context(), getSettingsSQL); err != nil {
120 return
121 }
122 defer rows.Close()
123
124 var settings = map[string]string{}
125
126 for rows.Next() {
127 var key string
128 var val string
129 err = rows.Scan(&key, &val)
130 if err == nil {
131 settings[key] = val
132 }
133 }
134
135 jr = JSONResult{Result: settings}
136 return
137 }
138
139 func setSystemSettings(
140 input interface{},
141 req *http.Request,
142 conn *sql.Conn,
143 ) (jr JSONResult, err error) {
144
145 var settings map[string]interface{}
146 raw := input.(*json.RawMessage)
147 json.Unmarshal(*raw, &settings)
148
149 for key, value := range settings {
150 _, err = conn.ExecContext(
151 req.Context(),
152 updateSettingSQL,
153 key, value)
154
155 if err != nil {
156 return
157 }
158 }
159
160 jr = JSONResult{
161 Code: http.StatusCreated,
162 Result: struct {
163 Result string `json:"result"`
164 }{"success"},
165 }
166 return
167 }
168
103 // Map/Feature style end points 169 // Map/Feature style end points
104 170
105 func getFeatureStyle( 171 func getFeatureStyle(
106 _ interface{}, 172 _ interface{},
107 req *http.Request, 173 req *http.Request,