add create product endpoint

This commit is contained in:
katefort 2025-04-21 19:13:58 -05:00
parent 43c183c29a
commit 561b8841fc
7 changed files with 104 additions and 23 deletions

View file

@ -2,12 +2,13 @@ package application
import (
"net/http"
"vegan-barcode/internal/models"
"github.com/gin-gonic/gin"
)
func (a *Application) GetClaimsHandler(c *gin.Context) {
system := c.DefaultQuery("system", "upc")
system := c.Query("system")
barcode := c.Query("barcode")
productClaims, err := a.GetClaims(system, barcode)
@ -17,3 +18,13 @@ func (a *Application) GetClaimsHandler(c *gin.Context) {
}
c.JSON(http.StatusOK, productClaims)
}
func (a *Application) PostClaimHandler(c *gin.Context) {
system := c.Query("system")
barcode := c.Query("barcode")
var requestBody models.UserClaimForm
c.BindJSON(&requestBody)
a.CreateClaim(system, barcode, requestBody)
}

View file

@ -1,6 +1,7 @@
package application
import (
"errors"
"vegan-barcode/internal/models"
)
@ -9,6 +10,9 @@ func (a *Application) GetClaims(system string, barcode string) (*models.ProductC
if err != nil {
return nil, err
}
if id == -1 {
return nil, errors.New("Product not found")
}
claims, err := a.db.FindClaimsByProductID(id)
if err != nil {
@ -17,3 +21,20 @@ func (a *Application) GetClaims(system string, barcode string) (*models.ProductC
return &models.ProductClaims{Id: id, Claims: claims}, nil
}
func (a *Application) CreateClaim(system string, barcode string, form models.UserClaimForm) {
id, err := a.db.FindProductIDByBarcode(system, barcode)
if err != nil {
return nil, err
}
// no product, create new
if id == -1 {
product, err := a.db.CreateProduct()
if err != nil {
return nil, err
}
id = product.ID
}
claim, err := a.db.CreateUserClaim(id, form)
}