Skip to content

Instantly share code, notes, and snippets.

@anta40
Last active September 15, 2019 14:18
Show Gist options
  • Save anta40/0d5ab916e3105eb4e655101146c849bd to your computer and use it in GitHub Desktop.
Save anta40/0d5ab916e3105eb4e655101146c849bd to your computer and use it in GitHub Desktop.
package main
import (
"database/sql"
"encoding/json"
"fmt"
"log"
"github.com/gorilla/mux"
"net/http"
_ "github.com/lib/pq"
)
const (
host = "localhost"
port = 2019
user = "postgres"
password = "testdb12345"
dbname = "db-dev-01"
)
type User struct {
UserId string `form:"userid" json:"userid"`
UserName string `form:"username" json:"username"`
UserEmail string `form:"email" json:"email"`
UserPhone string `form:"phone" json:"phone"`
}
type Response struct {
Status int `json:"status"`
Message string `json:"message"`
Data []User
}
func main() {
router := mux.NewRouter()
router.HandleFunc("/users", returnAllUsers).Methods("GET")
http.Handle("/", router)
fmt.Println("Connected to port 1234")
log.Fatal(http.ListenAndServe(":1234", router))
}
func DB_connect() *sql.DB {
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 {
log.Fatal(err)
}
return db
}
func returnAllUsers(w http.ResponseWriter, r *http.Request) {
var user User
var arr_user []User
var response Response
db := DB_connect()
defer db.Close()
rows, err := db.Query("SELECT userid,username,email,phone FROM user")
if err != nil {
log.Print(err)
}
for rows.Next() {
if err := rows.Scan(&user.UserId, &user.UserName, &user.UserEmail, &user.UserPhone); err != nil {
log.Fatal(err.Error())
} else {
arr_user = append(arr_user, user)
}
}
response.Status = 1
response.Message = "Success"
response.Data = arr_user
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment