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
 	}