aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/item
diff options
context:
space:
mode:
Diffstat (limited to 'item')
-rw-r--r--item/controller.go101
-rw-r--r--item/hooks.go13
-rw-r--r--item/item.go7
-rw-r--r--item/router.go1
-rw-r--r--item/service.go22
-rw-r--r--item/validators.go58
6 files changed, 17 insertions, 185 deletions
diff --git a/item/controller.go b/item/controller.go
index 9993688..bb2eb94 100644
--- a/item/controller.go
+++ b/item/controller.go
@@ -31,17 +31,8 @@ func handleGetBrandItems (ctx *gin.Context) {
return
}
- uId, ok := ctx.Get("UserID")
- if !ok {
- ctx.Error(e.ErrUnauthorized)
- ctx.Abort()
- return
- }
-
- userId := uId.(uint)
-
var items []SavedItem
- err = getBrandItems(&items, uint(id), userId)
+ err = getBrandItems(&items, uint(id))
if err != nil {
ctx.Error(err)
ctx.Abort()
@@ -49,7 +40,6 @@ func handleGetBrandItems (ctx *gin.Context) {
}
ctx.JSON(http.StatusOK, gin.H{
- "message": "success",
"data": items,
})
}
@@ -57,16 +47,7 @@ func handleGetBrandItems (ctx *gin.Context) {
func handleGetBrands (ctx *gin.Context) {
var brands []Brand
- uId, ok := ctx.Get("UserID")
- if !ok {
- ctx.Error(e.ErrUnauthorized)
- ctx.Abort()
- return
- }
-
- userId := uId.(uint)
-
- err := getBrands(&brands, userId)
+ err := getBrands(&brands)
if err != nil {
ctx.Error(err)
ctx.Abort()
@@ -74,7 +55,6 @@ func handleGetBrands (ctx *gin.Context) {
}
ctx.JSON(http.StatusOK, gin.H{
- "message": "success",
"data": brands,
})
}
@@ -83,16 +63,6 @@ func handleSaveBrand (ctx *gin.Context) {
var brand Brand
ctx.Bind(&brand)
- uId, ok := ctx.Get("UserID")
- if !ok {
- ctx.Error(e.ErrUnauthorized)
- ctx.Abort()
- return
- }
-
- userId := uId.(uint)
- brand.UserID = userId
-
err := brand.upsert()
if err != nil {
ctx.Error(err)
@@ -101,7 +71,6 @@ func handleSaveBrand (ctx *gin.Context) {
}
ctx.JSON(http.StatusOK, gin.H{
- "message": "success",
"data": brand,
})
}
@@ -116,24 +85,6 @@ func handleDelBrand (ctx *gin.Context) {
var brand Brand
brand.ID = uint(id)
-
- uId, ok := ctx.Get("UserID")
- if !ok {
- ctx.Error(e.ErrUnauthorized)
- ctx.Abort()
- return
- }
-
- userId := uId.(uint)
- brand.UserID = userId
-
- err = checkBrandOwnership(brand.ID, brand.UserID)
- if err != nil {
- ctx.Error(err)
- ctx.Abort()
- return
- }
-
err = brand.del()
if err != nil {
ctx.Error(err)
@@ -141,24 +92,13 @@ func handleDelBrand (ctx *gin.Context) {
return
}
- ctx.JSON(http.StatusOK, gin.H{
- "message": "success",
- })
+ ctx.JSON(http.StatusOK, nil)
}
func handleGetItems (ctx *gin.Context) {
var items []SavedItem
- uId, ok := ctx.Get("UserID")
- if !ok {
- ctx.Error(e.ErrUnauthorized)
- ctx.Abort()
- return
- }
-
- userId := uId.(uint)
-
- err := getItems(&items, userId)
+ err := getItems(&items)
if err != nil {
ctx.Error(err)
ctx.Abort()
@@ -166,7 +106,6 @@ func handleGetItems (ctx *gin.Context) {
}
ctx.JSON(http.StatusOK, gin.H{
- "message": "success",
"data": items,
})
}
@@ -175,16 +114,6 @@ func handleSaveItem (ctx *gin.Context) {
var item SavedItem
ctx.Bind(&item)
- uId, ok := ctx.Get("UserID")
- if !ok {
- ctx.Error(e.ErrUnauthorized)
- ctx.Abort()
- return
- }
-
- userId := uId.(uint)
- item.UserID = userId
-
err := item.upsert()
if err != nil {
ctx.Error(err)
@@ -193,7 +122,6 @@ func handleSaveItem (ctx *gin.Context) {
}
ctx.JSON(http.StatusOK, gin.H{
- "message": "success",
"data": item,
})
}
@@ -208,23 +136,6 @@ func handleDelItem (ctx *gin.Context) {
var item SavedItem
item.ID = uint(id)
- uId, ok := ctx.Get("UserID")
- if !ok {
- ctx.Error(e.ErrUnauthorized)
- ctx.Abort()
- return
- }
-
- userId := uId.(uint)
- item.UserID = userId
-
- err = checkItemOwnership(item.ID, item.UserID)
- if err != nil {
- ctx.Error(err)
- ctx.Abort()
- return
- }
-
err = item.del()
if err != nil {
ctx.Error(err)
@@ -232,7 +143,5 @@ func handleDelItem (ctx *gin.Context) {
return
}
- ctx.JSON(http.StatusOK, gin.H{
- "message": "success",
- })
+ ctx.JSON(http.StatusOK, nil)
}
diff --git a/item/hooks.go b/item/hooks.go
index 74b6860..5056cb1 100644
--- a/item/hooks.go
+++ b/item/hooks.go
@@ -20,22 +20,11 @@ package item
import (
"gorm.io/gorm"
"vidhukant.com/openbills/errors"
- e "errors"
)
func (i *SavedItem) BeforeSave(tx *gorm.DB) error {
var err error
- // also checks if brand actually exists
- err = checkBrandOwnership(i.BrandID, i.UserID)
- if err != nil {
- if e.Is(err, errors.ErrBrandNotFound) {
- // this error has a better error message for this case
- return errors.ErrBrandNotFound
- }
- return err
- }
-
err = i.validate()
if err != nil {
return err
@@ -60,7 +49,7 @@ func (b *Brand) BeforeDelete(tx *gorm.DB) error {
}
// delete all items
- err := db.Where("brand_id = ? and user_id = ?", b.ID, b.UserID).Delete(&SavedItem{}).Error
+ err := db.Where("brand_id = ?", b.ID).Delete(&SavedItem{}).Error
if err != nil {
return err
}
diff --git a/item/item.go b/item/item.go
index 3f911fa..617a662 100644
--- a/item/item.go
+++ b/item/item.go
@@ -20,7 +20,6 @@ package item
import (
"gorm.io/gorm"
d "vidhukant.com/openbills/db"
- "vidhukant.com/openbills/user"
)
var db *gorm.DB
@@ -32,8 +31,6 @@ func init() {
type Brand struct {
gorm.Model
- UserID uint `json:"-"`
- User user.User `json:"-"`
Name string
}
@@ -41,7 +38,7 @@ type Item struct {
Name string
Description string
HSN string
- UnitOfMeasure string // TODO: probably has to be a custom type
+ UnitOfMeasure string
UnitPrice string // float
GSTPercentage string // float
}
@@ -51,6 +48,4 @@ type SavedItem struct {
Item
BrandID uint
Brand Brand
- UserID uint `json:"-"`
- User user.User `json:"-"`
}
diff --git a/item/router.go b/item/router.go
index fab973f..b953d09 100644
--- a/item/router.go
+++ b/item/router.go
@@ -33,7 +33,6 @@ func Routes(route *gin.RouterGroup) {
i := route.Group("/item")
{
i.GET("/", handleGetItems)
- //i.GET("/:id", handleGetBrandItems)
i.POST("/", handleSaveItem)
i.DELETE("/:id", handleDelItem)
}
diff --git a/item/service.go b/item/service.go
index 80faff0..0b2afaf 100644
--- a/item/service.go
+++ b/item/service.go
@@ -21,12 +21,7 @@ import (
"vidhukant.com/openbills/errors"
)
-func getBrandItems(items *[]SavedItem, id, userId uint) error {
- err := checkBrandOwnership(id, userId)
- if err != nil {
- return err
- }
-
+func getBrandItems(items *[]SavedItem, id uint) error {
// get items
res := db.Model(&SavedItem{}).Where("brand_id = ?", id).Find(&items)
@@ -35,7 +30,6 @@ func getBrandItems(items *[]SavedItem, id, userId uint) error {
return res.Error
}
- // returns 404 if either row doesn't exist or if the user doesn't own it
if res.RowsAffected == 0 {
return errors.ErrEmptyResponse
}
@@ -43,8 +37,8 @@ func getBrandItems(items *[]SavedItem, id, userId uint) error {
return nil
}
-func getBrands(brands *[]Brand, userId uint) error {
- res := db.Where("user_id = ?", userId).Find(&brands)
+func getBrands(brands *[]Brand) error {
+ res := db.Find(&brands)
// TODO: handle potential errors
if res.Error != nil {
@@ -66,14 +60,13 @@ func (b *Brand) upsert() error {
func (b *Brand) del() error {
// delete brand
- res := db.Where("id = ? and user_id = ?", b.ID, b.UserID).Delete(b)
+ res := db.Where("id = ?", b.ID).Delete(b)
// TODO: handle potential errors
if res.Error != nil {
return res.Error
}
- // returns 404 if either row doesn't exist or if the user doesn't own it
if res.RowsAffected == 0 {
return errors.ErrNotFound
}
@@ -81,8 +74,8 @@ func (b *Brand) del() error {
return nil
}
-func getItems(items *[]SavedItem, userId uint) error {
- res := db.Where("user_id = ?", userId).Preload("Brand").Find(&items)
+func getItems(items *[]SavedItem) error {
+ res := db.Preload("Brand").Find(&items)
// TODO: handle potential errors
if res.Error != nil {
@@ -103,14 +96,13 @@ func (i *SavedItem) upsert() error {
}
func (i *SavedItem) del() error {
- res := db.Where("id = ? and user_id = ?", i.ID, i.UserID).Delete(i)
+ res := db.Where("id = ?", i.ID).Delete(i)
// TODO: handle potential errors
if res.Error != nil {
return res.Error
}
- // returns 404 if either row doesn't exist or if the user doesn't own it
if res.RowsAffected == 0 {
return errors.ErrNotFound
}
diff --git a/item/validators.go b/item/validators.go
index b808ae4..63c254f 100644
--- a/item/validators.go
+++ b/item/validators.go
@@ -32,11 +32,11 @@ func (b *Brand) validate() error {
return errors.ErrEmptyBrandName
}
- // make sure GSTIN is unique
+ // make sure brand name is unique
var count int64
err := db.Model(&Brand{}).
Select("name").
- Where("name = ? and user_id = ?", b.Name, b.UserID).
+ Where("name = ?", b.Name).
Count(&count).
Error
@@ -75,7 +75,7 @@ func (i *SavedItem) validate() error {
var count int64
err = db.Model(&SavedItem{}).
Select("name, brand_id").
- Where("brand_id = ? and name = ? and user_id = ?", i.BrandID, i.Name, i.UserID).
+ Where("brand_id = ? and name = ?", i.BrandID, i.Name).
Count(&count).
Error
@@ -89,55 +89,3 @@ func (i *SavedItem) validate() error {
return nil
}
-
-func checkBrandOwnership(brandId, userId uint) error {
- var brand Brand
- err := db.
- Select("id", "user_id").
- Where("id = ?", brandId).
- Find(&brand).
- Error
-
- // TODO: handle potential errors
- if err != nil {
- return err
- }
-
- // brand doesn't exist
- if brand.ID == 0 {
- return errors.ErrNotFound
- }
-
- // user doesn't own this brand
- if brand.UserID != userId {
- return errors.ErrForbidden
- }
-
- return nil
-}
-
-func checkItemOwnership(itemId, userId uint) error {
- var item SavedItem
- err := db.
- Select("id", "user_id").
- Where("id = ?", itemId).
- Find(&item).
- Error
-
- // TODO: handle potential errors
- if err != nil {
- return err
- }
-
- // item doesn't exist
- if item.ID == 0 {
- return errors.ErrNotFound
- }
-
- // user doesn't own this item
- if item.UserID != userId {
- return errors.ErrForbidden
- }
-
- return nil
-}