api routes and memory provider completed
This commit is contained in:
@@ -12,6 +12,14 @@ type ItemDTO struct {
|
|||||||
id int
|
id int
|
||||||
message string
|
message string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (item ItemDTO) GetId() int {
|
||||||
|
return item.id
|
||||||
|
}
|
||||||
|
func (item ItemDTO) GetMessage() string {
|
||||||
|
return item.message
|
||||||
|
}
|
||||||
|
|
||||||
type UserDTO struct {
|
type UserDTO struct {
|
||||||
id int
|
id int
|
||||||
}
|
}
|
||||||
@@ -70,8 +78,67 @@ func RegisterRoutes(router *gin.RouterGroup, prov types.IPersitenceProvider) {
|
|||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, ItemsToDTOs(items))
|
c.JSON(http.StatusOK, ItemsToDTOs(items))
|
||||||
})
|
})
|
||||||
router.POST("/item", func(c *gin.Context) {})
|
router.POST("/item", func(c *gin.Context) {
|
||||||
router.PUT("/item", func(c *gin.Context) {})
|
var item struct {
|
||||||
router.DELETE("/item/:id", func(c *gin.Context) {})
|
message string
|
||||||
router.GET("/link/:itemId/:userId", func(c *gin.Context) {})
|
}
|
||||||
|
if err := c.BindJSON(&item); err != nil {
|
||||||
|
c.String(http.StatusBadRequest, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
prov.CreateItem(ItemDTO{message: item.message})
|
||||||
|
c.Status(200)
|
||||||
|
})
|
||||||
|
router.PUT("/item", func(c *gin.Context) {
|
||||||
|
var item ItemDTO
|
||||||
|
if err := c.BindJSON(&item); err != nil {
|
||||||
|
c.String(http.StatusBadRequest, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := prov.UpdateItem(item); err != nil {
|
||||||
|
c.String(http.StatusInternalServerError, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.Status(200)
|
||||||
|
})
|
||||||
|
router.DELETE("/item/:id", func(c *gin.Context) {
|
||||||
|
id, err := strconv.Atoi(c.Param("id"))
|
||||||
|
if err != nil {
|
||||||
|
c.String(404, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := prov.DeleteItem(ItemDTO{id: id}); err != nil {
|
||||||
|
c.String(404, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.Status(200)
|
||||||
|
})
|
||||||
|
router.GET("/link/:itemId/:userId", func(c *gin.Context) {
|
||||||
|
itemId, err := strconv.Atoi(c.Param("itemId"))
|
||||||
|
if err != nil {
|
||||||
|
c.String(404, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
userId, err := strconv.Atoi(c.Param("userId"))
|
||||||
|
if err != nil {
|
||||||
|
c.String(404, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := prov.Link(UserDTO{id: userId}, ItemDTO{id: itemId}); err != nil {
|
||||||
|
c.String(404, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.Status(200)
|
||||||
|
})
|
||||||
|
router.POST("/user", func(c *gin.Context) {
|
||||||
|
var user struct {
|
||||||
|
id int
|
||||||
|
}
|
||||||
|
if err := c.BindJSON(&user); err != nil {
|
||||||
|
c.String(http.StatusBadRequest, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
prov.CreateUser(UserDTO{user.id})
|
||||||
|
c.Status(200)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,10 +19,6 @@ func (item Item) GetMessage() string {
|
|||||||
return item.message
|
return item.message
|
||||||
}
|
}
|
||||||
|
|
||||||
type User struct {
|
|
||||||
id int
|
|
||||||
}
|
|
||||||
|
|
||||||
type MemoryProvider struct {
|
type MemoryProvider struct {
|
||||||
index int
|
index int
|
||||||
items []Item
|
items []Item
|
||||||
@@ -89,3 +85,16 @@ func (prov MemoryProvider) Link(user types.IUser, item types.IItem) error {
|
|||||||
prov.itemsByUsers[user.GetId()] = append(prov.itemsByUsers[user.GetId()], storedItem)
|
prov.itemsByUsers[user.GetId()] = append(prov.itemsByUsers[user.GetId()], storedItem)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (prov MemoryProvider) DeleteItem(item types.IItem) error {
|
||||||
|
storedItem, err := prov.GetItemPtr(item.GetId())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
storedItem.deleted = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (prov MemoryProvider) CreateUser(user types.IUser) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,4 +7,6 @@ type IPersitenceProvider interface {
|
|||||||
GetItemByUser(user IUser) ([]IItem, error)
|
GetItemByUser(user IUser) ([]IItem, error)
|
||||||
GetAllItems() ([]IItem, error)
|
GetAllItems() ([]IItem, error)
|
||||||
Link(user IUser, item IItem) error
|
Link(user IUser, item IItem) error
|
||||||
|
DeleteItem(item IItem) error
|
||||||
|
CreateUser(user IUser) error
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user