Mercurial > gemma
comparison controllers/user.go @ 243:d39f897fae16
Made models for email, user and country driver.Valuer to get rid of some conversions.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 26 Jul 2018 18:37:52 +0200 |
parents | 3b688fe04c39 |
children | deabc2712634 |
comparison
equal
deleted
inserted
replaced
242:24eb518b0394 | 243:d39f897fae16 |
---|---|
1 package controllers | 1 package controllers |
2 | 2 |
3 import ( | 3 import ( |
4 "database/sql" | 4 "database/sql" |
5 "database/sql/driver" | |
5 "encoding/json" | 6 "encoding/json" |
6 "errors" | 7 "errors" |
7 "net/http" | 8 "net/http" |
8 "regexp" | 9 "regexp" |
9 "strings" | 10 "strings" |
72 } | 73 } |
73 *e = Email(s) | 74 *e = Email(s) |
74 return nil | 75 return nil |
75 } | 76 } |
76 | 77 |
78 func (e Email) Value() (driver.Value, error) { | |
79 return string(e), nil | |
80 } | |
81 | |
77 var ( | 82 var ( |
78 validCountries = []string{ | 83 validCountries = []string{ |
79 "AT", "BG", "DE", "HU", "HR", | 84 "AT", "BG", "DE", "HU", "HR", |
80 "MD", "RO", "RS", "SK", "UA", | 85 "MD", "RO", "RS", "SK", "UA", |
81 } | 86 } |
95 } | 100 } |
96 } | 101 } |
97 return errNoValidCountry | 102 return errNoValidCountry |
98 } | 103 } |
99 | 104 |
105 func (c Country) Value() (driver.Value, error) { | |
106 return string(c), nil | |
107 } | |
108 | |
100 var ( | 109 var ( |
101 validRoles = []string{ | 110 validRoles = []string{ |
102 "waterway_user", | 111 "waterway_user", |
103 "waterway_admin", | 112 "waterway_admin", |
104 "sys_admin", | 113 "sys_admin", |
105 } | 114 } |
106 errNoValidRole = errors.New("Not a valid role") | 115 errNoValidRole = errors.New("Not a valid role") |
107 ) | 116 ) |
117 | |
118 func (r Role) Value() (driver.Value, error) { | |
119 return string(r), nil | |
120 } | |
108 | 121 |
109 func (r *Role) UnmarshalJSON(data []byte) error { | 122 func (r *Role) UnmarshalJSON(data []byte) error { |
110 var s string | 123 var s string |
111 if err := json.Unmarshal(data, &s); err != nil { | 124 if err := json.Unmarshal(data, &s); err != nil { |
112 return err | 125 return err |
164 | 177 |
165 if newUser.Extent == nil { | 178 if newUser.Extent == nil { |
166 _, err = db.Exec( | 179 _, err = db.Exec( |
167 updateUserSQL, | 180 updateUserSQL, |
168 user, | 181 user, |
169 string(newUser.Role), | 182 newUser.Role, |
170 newUser.User, | 183 newUser.User, |
171 newUser.Password, | 184 newUser.Password, |
172 string(newUser.Country), | 185 newUser.Country, |
173 string(newUser.Email), | 186 newUser.Email, |
174 ) | 187 ) |
175 } else { | 188 } else { |
176 _, err = db.Exec( | 189 _, err = db.Exec( |
177 updateUserExtentSQL, | 190 updateUserExtentSQL, |
178 user, | 191 user, |
179 string(newUser.Role), | 192 newUser.Role, |
180 newUser.User, | 193 newUser.User, |
181 newUser.Password, | 194 newUser.Password, |
182 string(newUser.Country), | 195 newUser.Country, |
183 newUser.Extent.X1, newUser.Extent.Y1, | 196 newUser.Extent.X1, newUser.Extent.Y1, |
184 newUser.Extent.X2, newUser.Extent.Y2, | 197 newUser.Extent.X2, newUser.Extent.Y2, |
185 string(newUser.Email), | 198 newUser.Email, |
186 ) | 199 ) |
187 } | 200 } |
188 | 201 |
189 if err != nil { | 202 if err != nil { |
190 return | 203 return |
209 user := input.(*User) | 222 user := input.(*User) |
210 | 223 |
211 if user.Extent == nil { | 224 if user.Extent == nil { |
212 _, err = db.Exec( | 225 _, err = db.Exec( |
213 createUserSQL, | 226 createUserSQL, |
214 string(user.Role), | 227 user.Role, |
215 user.User, | 228 user.User, |
216 user.Password, | 229 user.Password, |
217 string(user.Country), | 230 user.Country, |
218 string(user.Email), | 231 user.Email, |
219 ) | 232 ) |
220 } else { | 233 } else { |
221 _, err = db.Exec( | 234 _, err = db.Exec( |
222 createUserExtentSQL, | 235 createUserExtentSQL, |
223 string(user.Role), | 236 user.Role, |
224 user.User, | 237 user.User, |
225 user.Password, | 238 user.Password, |
226 string(user.Country), | 239 user.Country, |
227 user.Extent.X1, user.Extent.Y1, | 240 user.Extent.X1, user.Extent.Y1, |
228 user.Extent.X2, user.Extent.Y2, | 241 user.Extent.X2, user.Extent.Y2, |
229 string(user.Email), | 242 user.Email, |
230 ) | 243 ) |
231 } | 244 } |
232 | 245 |
233 if err != nil { | 246 if err != nil { |
234 return | 247 return |