40 lines
890 B
Go
40 lines
890 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
func emailUpdate(e email) error {
|
||
|
statement := `
|
||
|
UPDATE emails
|
||
|
SET sendReplyNotifications = $3, sendModeratorNotifications = $4
|
||
|
WHERE email = $1 AND unsubscribeSecretHex = $2;
|
||
|
`
|
||
|
_, err := db.Exec(statement, e.Email, e.UnsubscribeSecretHex, e.SendReplyNotifications, e.SendModeratorNotifications)
|
||
|
if err != nil {
|
||
|
logger.Errorf("error updating email: %v", err)
|
||
|
return errorInternal
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func emailUpdateHandler(w http.ResponseWriter, r *http.Request) {
|
||
|
type request struct {
|
||
|
Email *email `json:"email"`
|
||
|
}
|
||
|
|
||
|
var x request
|
||
|
if err := bodyUnmarshal(r, &x); err != nil {
|
||
|
bodyMarshal(w, response{"success": false, "message": err.Error()})
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if err := emailUpdate(*x.Email); err != nil {
|
||
|
bodyMarshal(w, response{"success": true, "message": err.Error()})
|
||
|
return
|
||
|
}
|
||
|
|
||
|
bodyMarshal(w, response{"success": true})
|
||
|
}
|