Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This thing is crazy. This may seem simple to some but I asked it to write a signup endpoint for signing up to a website:

``` package main

import ( "database/sql" "fmt" "log" "net/http" "time"

"golang.org/x/crypto/bcrypt"

_ "github.com/lib/pq" )

const ( host = "localhost" port = 5432 user = "postgres" password = "password" dbname = "mydb" )

func main() { // Create a new HTTP server http.HandleFunc("/signup", signupHandler) log.Fatal(http.ListenAndServe(":8080", nil)) }

// signupHandler handles the signup request. func signupHandler(w http.ResponseWriter, r *http.Request) { // Parse the request body username := r.FormValue("username") password := r.FormValue("password")

// Hash the password hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) if err != nil { http.Error(w, "Error hashing password: "+err.Error(), http.StatusInternalServerError) return }

// Connect to the database psqlInfo := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname) db, err := sql.Open("postgres", psqlInfo) if err != nil { http.Error(w, "Error connecting to database: "+err.Error(), http.StatusInternalServerError) return } defer db.Close()

// Insert the username and hashed password into the database _, err = db.Exec("INSERT INTO users (username, password) VALUES ($1, $2)", username, hash) if err != nil { http.Error(w, "Error inserting into database: "+err.Error(), http.StatusInternalServerError) return }

// Send the response w.Write([]byte("User successfully signed up!")) } ```

Along with this, it included:

``` This program uses the database/sql package to connect to a PostgreSQL database and insert the username and hashed password into the users table. It also uses the golang.org/x/crypto/bcrypt package to hash the password using the bcrypt.GenerateFromPassword function.

To run this program, you will need to have a PostgreSQL database running and a users table with a username and password column. You can create the table using the following SQL statement:

CREATE TABLE users ( username text NOT NULL, password bytea NOT NULL );

This program is a simple example of how to handle signup requests and store user data in a database. In a real-world application, you should also validate the input data and handle any potential errors more grace ```

Not only is this doing what the prompt asks, it's going above and beyond, and giving tips on other things that you might miss. As a teaching prompt alone, this is absolutely incredible.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: