Mercurial > gemma
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, |