pejhancctv/handlers/address.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")
}