Mercurial > gemma
comparison controllers/user.go @ 254:de6fdb316b8f
Implemented /users/{user} GET a listing of given user.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 27 Jul 2018 12:30:19 +0200 |
parents | 322c3d0e05ef |
children | dfc2b035e055 |
comparison
equal
deleted
inserted
replaced
253:322c3d0e05ef | 254:de6fdb316b8f |
---|---|
3 import ( | 3 import ( |
4 "database/sql" | 4 "database/sql" |
5 "database/sql/driver" | 5 "database/sql/driver" |
6 "encoding/json" | 6 "encoding/json" |
7 "errors" | 7 "errors" |
8 "fmt" | |
8 "net/http" | 9 "net/http" |
9 "regexp" | 10 "regexp" |
10 "strings" | 11 "strings" |
11 | 12 |
12 "github.com/gorilla/mux" | 13 "github.com/gorilla/mux" |
53 country, | 54 country, |
54 email_address, | 55 email_address, |
55 ST_XMin(map_extent), ST_YMin(map_extent), | 56 ST_XMin(map_extent), ST_YMin(map_extent), |
56 ST_XMax(map_extent), ST_YMax(map_extent) | 57 ST_XMax(map_extent), ST_YMax(map_extent) |
57 FROM sys_admin.list_users` | 58 FROM sys_admin.list_users` |
59 | |
60 listUserSQL = `SELECT | |
61 rolname, | |
62 country, | |
63 email_address, | |
64 ST_XMin(map_extent), ST_YMin(map_extent), | |
65 ST_XMax(map_extent), ST_YMax(map_extent) | |
66 FROM sys_admin.list_users | |
67 WHERE username = $1` | |
58 ) | 68 ) |
59 | 69 |
60 var errNoString = errors.New("Not a string") | 70 var errNoString = errors.New("Not a string") |
61 | 71 |
62 var ( | 72 var ( |
333 Users: users, | 343 Users: users, |
334 }, | 344 }, |
335 } | 345 } |
336 return | 346 return |
337 } | 347 } |
348 | |
349 func listUser( | |
350 rw http.ResponseWriter, req *http.Request, | |
351 input interface{}, db *sql.DB, | |
352 ) (jr JSONResult, err error) { | |
353 | |
354 user := mux.Vars(req)["user"] | |
355 if user == "" { | |
356 err = JSONError{http.StatusBadRequest, "error: user empty"} | |
357 return | |
358 } | |
359 | |
360 result := &User{ | |
361 User: user, | |
362 Extent: &BoundingBox{}, | |
363 } | |
364 | |
365 err = db.QueryRow(listUserSQL, user).Scan( | |
366 &result.Role, | |
367 &result.Country, | |
368 &result.Email, | |
369 &result.Extent.X1, &result.Extent.Y1, | |
370 &result.Extent.X2, &result.Extent.Y2, | |
371 ) | |
372 | |
373 switch { | |
374 case err == sql.ErrNoRows: | |
375 err = JSONError{ | |
376 Code: http.StatusNotFound, | |
377 Message: fmt.Sprintf("Cannot find user %s.", user), | |
378 } | |
379 return | |
380 case err != nil: | |
381 return | |
382 } | |
383 | |
384 jr.Result = result | |
385 return | |
386 } |