diff --git a/api/graphql/resolvers/scanner.go b/api/graphql/resolvers/scanner.go index cd2fb901..dab821fe 100644 --- a/api/graphql/resolvers/scanner.go +++ b/api/graphql/resolvers/scanner.go @@ -9,8 +9,24 @@ import ( ) func (r *mutationResolver) ScanAll(ctx context.Context) (*models.ScannerResult, error) { - panic("Not implemented") + if err := scanner.ScanAll(r.Database); err != nil { + errorMessage := fmt.Sprintf("Error starting scanner: %s", err.Error()) + return &models.ScannerResult{ + Finished: false, + Success: false, + Message: &errorMessage, + }, nil + } + + startMessage := "Scanner started" + + return &models.ScannerResult{ + Finished: false, + Success: true, + Message: &startMessage, + }, nil } + func (r *mutationResolver) ScanUser(ctx context.Context, userID int) (*models.ScannerResult, error) { if err := scanner.ScanUser(r.Database, userID); err != nil { errorMessage := fmt.Sprintf("Error scanning user: %s", err.Error()) diff --git a/api/scanner/album_scanner.go b/api/scanner/album_scanner.go index 6981260c..75003547 100644 --- a/api/scanner/album_scanner.go +++ b/api/scanner/album_scanner.go @@ -62,6 +62,26 @@ func (cache *scanner_cache) album_contains_photo(path string) *bool { return nil } +func ScanAll(database *sql.DB) error { + rows, err := database.Query("SELECT * FROM user") + if err != nil { + log.Printf("Could not fetch all users from database: %s\n", err.Error()) + return err + } + + users, err := models.NewUsersFromRows(rows) + if err != nil { + log.Printf("Could not convert users: %s\n", err) + return err + } + + for _, user := range users { + go scan(database, user) + } + + return nil +} + func ScanUser(database *sql.DB, userId int) error { row := database.QueryRow("SELECT * FROM user WHERE user_id = ?", userId)