package main import ( "encoding/json" "fmt" "net/http" "time" "git.rpuzonas.com/rpuzonas/go-rss-aggregator/internal/database" ) func (apiCfg *apiConfig) handlerCreateUser(w http.ResponseWriter, r *http.Request) { type parameters struct { Name string `json:"name"` } decoder := json.NewDecoder(r.Body) params := parameters{} err := decoder.Decode(¶ms) if err != nil { respondWithError(w, 400, fmt.Sprintf("Error parsing JSON: %v", err)) return } now := time.Now().UTC() user, err := apiCfg.DB.CreateUser(r.Context(), database.CreateUserParams{ UpdatedAt: now, CreatedAt: now, Name: params.Name, }) if err != nil { respondWithError(w, 400, fmt.Sprintf("Couldn't create user: %v", err)) return } respondWithJSON(w, 201, databaseUserToUser(user)) } func (apiCfg *apiConfig) handlerGetUser(w http.ResponseWriter, r *http.Request, user User) { respondWithJSON(w, 200, user) } func (apiCfg *apiConfig) handlerGetPostsForUser(w http.ResponseWriter, r *http.Request, user User) { posts, err := apiCfg.DB.GetPostsForUser(r.Context(), database.GetPostsForUserParams{ UserID: user.ID, Limit: 10, }) if err != nil { respondWithError(w, 400, fmt.Sprintf("Failed to list posts for user: %v", err)) return } respondWithJSON(w, 200, databasePostsToPosts(posts)) }