Make sure to remove integration settings when removing a user
This commit is contained in:
parent
e878dca3d7
commit
7b995044b4
1 changed files with 12 additions and 8 deletions
|
@ -6,7 +6,6 @@ package storage // import "miniflux.app/storage"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -288,18 +287,23 @@ func (s *Storage) fetchUser(query string, args ...interface{}) (*model.User, err
|
||||||
|
|
||||||
// RemoveUser deletes a user.
|
// RemoveUser deletes a user.
|
||||||
func (s *Storage) RemoveUser(userID int64) error {
|
func (s *Storage) RemoveUser(userID int64) error {
|
||||||
result, err := s.db.Exec("DELETE FROM users WHERE id = $1", userID)
|
ts, err := s.db.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf(`store: unable to remove this user: %v`, err)
|
return fmt.Errorf(`store: unable to start transaction: %v`, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
count, err := result.RowsAffected()
|
if _, err := ts.Exec(`DELETE FROM users WHERE id=$1`, userID); err != nil {
|
||||||
if err != nil {
|
ts.Rollback()
|
||||||
return fmt.Errorf(`store: unable to remove this user: %v`, err)
|
return fmt.Errorf(`store: unable to remove user #%d: %v`, userID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if count == 0 {
|
if _, err := ts.Exec(`DELETE FROM integrations WHERE user_id=$1`, userID); err != nil {
|
||||||
return errors.New(`store: nothing has been removed`)
|
ts.Rollback()
|
||||||
|
return fmt.Errorf(`store: unable to remove integration settings for user #%d: %v`, userID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := ts.Commit(); err != nil {
|
||||||
|
return fmt.Errorf(`store: unable to commit transaction: %v`, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Add table
Reference in a new issue