Mercurial > gemma
diff controllers/user.go @ 342:c6bd6ed18942
Use INSTEAD OF trigger for user deletion
As we already have this for updating, it's more symmetric to make
the whole thing look like a real table. TODO: make it happen also
for user creation.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Mon, 06 Aug 2018 12:37:06 +0200 |
parents | 003243ec5ce5 |
children | 5b03f420957d |
line wrap: on
line diff
--- a/controllers/user.go Mon Aug 06 12:36:20 2018 +0200 +++ b/controllers/user.go Mon Aug 06 12:37:06 2018 +0200 @@ -28,7 +28,7 @@ = ($2, $3, $4, $5, ST_MakeBox2D(ST_Point($6, $7), ST_Point($8, $9)), $10) WHERE username = $1` - deleteUserSQL = `SELECT sys_admin.delete_user($1)` + deleteUserSQL = `DELETE FROM users.list_users WHERE username = $1` listUsersSQL = `SELECT rolname, @@ -66,7 +66,17 @@ return } - if _, err = db.Exec(deleteUserSQL, user); err != nil { + var res sql.Result + + if res, err = db.Exec(deleteUserSQL, user); err != nil { + return + } + + if n, err2 := res.RowsAffected(); err2 == nil && n == 0 { + err = JSONError{ + Code: http.StatusNotFound, + Message: fmt.Sprintf("Cannot find user %s.", user), + } return }