diff --git a/user/store.go b/user/store.go index 53598b14..0784ae42 100644 --- a/user/store.go +++ b/user/store.go @@ -269,8 +269,12 @@ func (s *commonStore) MarkUserRemoved(userID string) error { return err } defer tx.Rollback() - // Get username for deleteUserAccess query - user, err := s.UserByID(userID) + // Get username for deleteUserAccess query (must be inside tx for consistency) + rows, err := tx.Query(s.queries.selectUserByID, userID) + if err != nil { + return err + } + user, err := s.readUser(rows) if err != nil { return err } diff --git a/user/store_sqlite.go b/user/store_sqlite.go index c90a533e..57c61f0c 100644 --- a/user/store_sqlite.go +++ b/user/store_sqlite.go @@ -2,8 +2,12 @@ package user import ( "database/sql" + "fmt" + "path/filepath" _ "github.com/mattn/go-sqlite3" // SQLite driver + + "heckel.io/ntfy/v2/util" ) const ( @@ -200,6 +204,10 @@ const ( // NewSQLiteStore creates a new SQLite-backed user store func NewSQLiteStore(filename, startupQueries string) (Store, error) { + parentDir := filepath.Dir(filename) + if !util.FileExists(parentDir) { + return nil, fmt.Errorf("user database directory %s does not exist or is not accessible", parentDir) + } db, err := sql.Open("sqlite3", filename) if err != nil { return nil, err