package main import ( "database/sql" "fmt" "log" _ "github.com/lib/pq" ) // setup the Database func setupDatabase() *sql.DB { connStr := "user=postgres dbname=postgres sslmode=disable" db, err := sql.Open("postgres", connStr) if err != nil { log.Fatal(err) } return db } // getNames gets the name of all the challenges func getName(db *sql.DB) string { // get the current name of the challenges query := fmt.Sprintf("SELECT name FROM challenges WHERE points=200") var names string err := db.QueryRow(query).Scan(&names) if err != nil { log.Fatalf("[ E ] :", err) } return names } // getAllChallenges gets all the challenges from the server func getAllChallenges(db *sql.DB) []Challenge { // build the query query := fmt.Sprintf("SELECT * FROM challenges") // Execute the query rows, err := db.Query(query) defer rows.Close() if err != nil { log.Printf("[ E ] getAllChallenges query: %v\n\t\t\t query: %s\n", err, query) return []Challenge{} } var challenges []Challenge // iterate over the returned rows for rows.Next() { var name, description, flag, container, category string var points int var static bool scanErr := rows.Scan(&name, &description, &flag, &container, &category, &points, &static) if scanErr != nil { log.Printf("[ E ] scan error: %v", scanErr) return []Challenge{} } newChallenge := Challenge{ Name: name, Description: description, Flag: flag, Container: container, Category: category, Points: points, Static: static, } challenges = append(challenges, newChallenge) } return challenges }