mirror of
https://github.com/kataras/iris.git
synced 2025-12-20 19:37:03 +00:00
reorganization of _examples and add some new examples such as iris+groupcache+mysql+docker
Former-commit-id: ed635ee95de7160cde11eaabc0c1dcb0e460a620
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris/v12/_examples/mvc/vuejs-todo-mvc/src/todo"
|
||||
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/kataras/iris/v12/mvc"
|
||||
"github.com/kataras/iris/v12/sessions"
|
||||
"github.com/kataras/iris/v12/websocket"
|
||||
)
|
||||
|
||||
// TodoController is our TODO app's web controller.
|
||||
type TodoController struct {
|
||||
Service todo.Service
|
||||
|
||||
Session *sessions.Session
|
||||
|
||||
NS *websocket.NSConn
|
||||
}
|
||||
|
||||
// BeforeActivation called once before the server ran, and before
|
||||
// the routes and dependencies binded.
|
||||
// You can bind custom things to the controller, add new methods, add middleware,
|
||||
// add dependencies to the struct or the method(s) and more.
|
||||
func (c *TodoController) BeforeActivation(b mvc.BeforeActivation) {
|
||||
// this could be binded to a controller's function input argument
|
||||
// if any, or struct field if any:
|
||||
b.Dependencies().Register(func(ctx iris.Context) (items []todo.Item) {
|
||||
ctx.ReadJSON(&items)
|
||||
return
|
||||
}) // Note: from Iris v12.2 these type of dependencies are automatically resolved.
|
||||
}
|
||||
|
||||
// Get handles the GET: /todos route.
|
||||
func (c *TodoController) Get() []todo.Item {
|
||||
return c.Service.Get(c.Session.ID())
|
||||
}
|
||||
|
||||
// PostItemResponse the response data that will be returned as json
|
||||
// after a post save action of all todo items.
|
||||
type PostItemResponse struct {
|
||||
Success bool `json:"success"`
|
||||
}
|
||||
|
||||
var emptyResponse = PostItemResponse{Success: false}
|
||||
|
||||
// Post handles the POST: /todos route.
|
||||
func (c *TodoController) Post(newItems []todo.Item) PostItemResponse {
|
||||
if err := c.Service.Save(c.Session.ID(), newItems); err != nil {
|
||||
return emptyResponse
|
||||
}
|
||||
|
||||
return PostItemResponse{Success: true}
|
||||
}
|
||||
|
||||
func (c *TodoController) Save(msg websocket.Message) error {
|
||||
id := c.Session.ID()
|
||||
c.NS.Conn.Server().Broadcast(nil, websocket.Message{
|
||||
Namespace: msg.Namespace,
|
||||
Event: "saved",
|
||||
To: id,
|
||||
Body: websocket.Marshal(c.Service.Get(id)),
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user