kreangkrai icon

dvdrental_3

kreangkrai | PRO | 03/19/19 03:50:14 AM UTC | 0 ⭐ | 858 👁️ | Never ⏰ | []
Go |

2.38 KB

|

None

|

0 👍

/

0 👎

package main
 
import (
    "github.com/gin-gonic/gin"
    "github.com/jackc/pgx"
    "log"
    "net/http"
    "time"
)
 
type Customers []Customer
type Customer struct {
    CustomerID int       `json:"customer_id"`
    StoreID    int       `json:"store_id"`
    FirstName  string    `json:"first_name"`
    LastName   string    `json:"last_name"`
    Email      string    `json:"email"`
    AddressID  int       `json:"address_id"`
    Activebool bool      `json:"activebool"`
    CreateDate time.Time `json:"create_date"`
    LastUpdate time.Time `json:"last_update"`
    Active     int       `json:"active"`
}
 
func main() {
    r := gin.Default()
    r.GET("/customers", func(c *gin.Context) {
        limit := c.DefaultQuery("limit", "10")
        customers := getCustomers(limit)
        c.JSON(http.StatusOK, gin.H{
            "data": customers,
        })
    })
    r.GET("/customer/:id", func(c *gin.Context) {
        customerID := c.Param("id")
        customer := getCustomerByID(customerID)
        c.JSON(http.StatusOK, gin.H{
            "data": customer,
        })
    })
    r.Run(":8880")
}
 
func getCustomers(limit string) (customers Customers) {
    config := pgx.ConnConfig{Host: "172.17.0.2", Port: 5432, Database: "dvdrental", User: "postgres", Password: "toor123"}
    conn, err := pgx.Connect(config)
    defer conn.Close()
    if err != nil {
        log.Fatalf("Unable to establish connection: %v", err)
    }
 
    // Query customer
    rows, _ := conn.Query("select * from customer limit $1", limit)
    for rows.Next() {
        customer := Customer{}
 
        rows.Scan(&customer.CustomerID, &customer.StoreID, &customer.FirstName, &customer.LastName, &customer.Email, &customer.AddressID, &customer.Activebool, &customer.CreateDate, &customer.LastUpdate, &customer.Active)
 
        customers = append(customers, customer)
    }
    return customers
}
 
func getCustomerByID(id string) (customer Customer) {
    config := pgx.ConnConfig{Host: "172.17.0.2", Port: 5432, Database: "dvdrental", User: "postgres", Password: "toor123"}
    conn, err := pgx.Connect(config)
    defer conn.Close()
    if err != nil {
        log.Fatalf("Unable to establish connection: %v", err)
    }
 
    // Query customer
    rows, _ := conn.Query("select * from customer as cus where cus.customer_id=$1", id)
    for rows.Next() {
        rows.Scan(&customer.CustomerID, &customer.StoreID, &customer.FirstName, &customer.LastName, &customer.Email, &customer.AddressID, &customer.Activebool, &customer.CreateDate, &customer.LastUpdate, &customer.Active)
    }
    return
}

Comments