Added arn to the main repository
This commit is contained in:
54
arn/IDCollection.go
Normal file
54
arn/IDCollection.go
Normal file
@ -0,0 +1,54 @@
|
||||
package arn
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/aerogo/aero"
|
||||
"github.com/aerogo/api"
|
||||
)
|
||||
|
||||
// IDCollection ...
|
||||
type IDCollection interface {
|
||||
Add(id string) error
|
||||
Remove(id string) bool
|
||||
Save()
|
||||
}
|
||||
|
||||
// AddAction returns an API action that adds a new item to the IDCollection.
|
||||
func AddAction() *api.Action {
|
||||
return &api.Action{
|
||||
Name: "add",
|
||||
Route: "/add/:item-id",
|
||||
Run: func(obj interface{}, ctx aero.Context) error {
|
||||
list := obj.(IDCollection)
|
||||
itemID := ctx.Get("item-id")
|
||||
err := list.Add(itemID)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
list.Save()
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// RemoveAction returns an API action that removes an item from the IDCollection.
|
||||
func RemoveAction() *api.Action {
|
||||
return &api.Action{
|
||||
Name: "remove",
|
||||
Route: "/remove/:item-id",
|
||||
Run: func(obj interface{}, ctx aero.Context) error {
|
||||
list := obj.(IDCollection)
|
||||
itemID := ctx.Get("item-id")
|
||||
|
||||
if !list.Remove(itemID) {
|
||||
return errors.New("This item does not exist in the list")
|
||||
}
|
||||
|
||||
list.Save()
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user