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") }