diff --git a/internal/database/getUsers.sql.go b/internal/database/getUsers.sql.go new file mode 100644 index 0000000..5b730b0 --- /dev/null +++ b/internal/database/getUsers.sql.go @@ -0,0 +1,42 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.28.0 +// source: getUsers.sql + +package database + +import ( + "context" +) + +const getUsers = `-- name: GetUsers :many +SELECT id, created_at, updated_at, name FROM users WHERE true +` + +func (q *Queries) GetUsers(ctx context.Context) ([]User, error) { + rows, err := q.db.QueryContext(ctx, getUsers) + if err != nil { + return nil, err + } + defer rows.Close() + var items []User + for rows.Next() { + var i User + if err := rows.Scan( + &i.ID, + &i.CreatedAt, + &i.UpdatedAt, + &i.Name, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/handlers/getUsersHandler.go b/internal/handlers/getUsersHandler.go new file mode 100644 index 0000000..82af60d --- /dev/null +++ b/internal/handlers/getUsersHandler.go @@ -0,0 +1,30 @@ +package handlers + +import ( + "context" + "fmt" + "github.com/rdarius/boot-dev-blog-aggregator/internal/config" + "os" +) + +func GetUsersHandler(s *config.State, cmd config.Command) error { + ctx := context.Background() + + u, err := s.DB.GetUsers(ctx) + if err != nil { + fmt.Println("Failed to get Users") + os.Exit(1) + } + + for _, u := range u { + fmt.Printf("* %s", u.Name) + + if u.Name == s.Config.CurrentUserName { + fmt.Print(" (current)") + } + + fmt.Print("\n") + } + + return nil +} diff --git a/internal/handlers/loginHandler.go b/internal/handlers/loginHandler.go index e86dd60..354e1d1 100644 --- a/internal/handlers/loginHandler.go +++ b/internal/handlers/loginHandler.go @@ -26,7 +26,7 @@ func LoginHandler(s *config.State, cmd config.Command) error { return fmt.Errorf("failed to set current user: %w", err) } - fmt.Printf("User set to %s\n", s.Config.CurrentUserName) + fmt.Printf("User set to %s\n", u.Name) return nil } diff --git a/main.go b/main.go index 97ddb50..6a03d95 100644 --- a/main.go +++ b/main.go @@ -34,6 +34,7 @@ func main() { commands.Register("login", handlers.LoginHandler) commands.Register("register", handlers.RegisterHandler) commands.Register("reset", handlers.ResetUsersHandler) + commands.Register("users", handlers.GetUsersHandler) if len(os.Args) < 2 { log.Fatal("usage: boot-dev-blog-aggregator [args...]") diff --git a/sql/queries/getUsers.sql b/sql/queries/getUsers.sql new file mode 100644 index 0000000..1fdb961 --- /dev/null +++ b/sql/queries/getUsers.sql @@ -0,0 +1,2 @@ +-- name: GetUsers :many +SELECT * FROM users WHERE true; \ No newline at end of file