124 lines
2.2 KiB
Go
124 lines
2.2 KiB
Go
package handlers
|
|
|
|
import (
|
|
database "app/database"
|
|
"app/models"
|
|
"app/repositories"
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
// Create(a *models.Address) error
|
|
// GetAddresses(id uint) ([]models.Address, error)
|
|
// UpdateAddress(id uint, address string) error
|
|
// Delete(id uint) error
|
|
|
|
func initAddress() *repositories.Address_repository {
|
|
db := database.Db()
|
|
addressRepository := new(repositories.Address_repository)
|
|
addressRepository.DB = &db
|
|
|
|
return addressRepository
|
|
}
|
|
|
|
func CreateAddress(c echo.Context) error {
|
|
|
|
address := new(models.Address)
|
|
|
|
if err := c.Bind(address); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
addressRepository := initAddress()
|
|
|
|
err := addressRepository.Create(address)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return c.JSON(http.StatusCreated, address)
|
|
}
|
|
|
|
func GetUserAddresses(c echo.Context) error {
|
|
id, err := strconv.Atoi(c.Param("id"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
addressRepository := initAddress()
|
|
|
|
addresses, err := addressRepository.GetAddresses(uint(id))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return c.JSON(http.StatusAccepted, addresses)
|
|
}
|
|
|
|
func UpdateAddress(c echo.Context) error {
|
|
id, err := strconv.Atoi(c.Param("id"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
var update struct {
|
|
NewAddress string `json:"address"`
|
|
}
|
|
|
|
addressRepository := initAddress()
|
|
|
|
if update.NewAddress != "" {
|
|
err = addressRepository.UpdateAddress(update.NewAddress, uint(id))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
return c.String(http.StatusAccepted, "updated")
|
|
}
|
|
|
|
func UpdatePostCode(c echo.Context) error {
|
|
|
|
id, err := strconv.Atoi(c.Param("id"))
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
var update struct {
|
|
NewPostCode string `json:"postcode"`
|
|
}
|
|
|
|
if err := c.Bind(&update); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
addressRepository := initAddress()
|
|
|
|
if update.NewPostCode != "" {
|
|
err = addressRepository.UpdatePostCode(update.NewPostCode, uint(id))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
return c.String(http.StatusAccepted, "updated")
|
|
}
|
|
|
|
func DeleteAddress(c echo.Context) error {
|
|
id, err := strconv.Atoi(c.Param("id"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
addressRepository := initAddress()
|
|
|
|
err = addressRepository.Delete(uint(id))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return c.String(http.StatusAccepted, "removed")
|
|
}
|