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