github.com/res-am/buffalo@v0.11.1/resource.go (about) 1 package buffalo 2 3 import "errors" 4 5 // Resource interface allows for the easy mapping 6 // of common RESTful actions to a set of paths. See 7 // the a.Resource documentation for more details. 8 // NOTE: When skipping Resource handlers, you need to first declare your 9 // resource handler as a type of buffalo.Resource for the Skip function to 10 // properly recognize and match it. 11 /* 12 // Works: 13 var cr Resource 14 cr = &carsResource{&buffaloBaseResource{}} 15 g = a.Resource("/cars", cr) 16 g.Use(SomeMiddleware) 17 g.Middleware.Skip(SomeMiddleware, cr.Show) 18 19 // Doesn't Work: 20 cr := &carsResource{&buffaloBaseResource{}} 21 g = a.Resource("/cars", cr) 22 g.Use(SomeMiddleware) 23 g.Middleware.Skip(SomeMiddleware, cr.Show) 24 */ 25 type Resource interface { 26 List(Context) error 27 Show(Context) error 28 New(Context) error 29 Create(Context) error 30 Edit(Context) error 31 Update(Context) error 32 Destroy(Context) error 33 } 34 35 // BaseResource fills in the gaps for any Resource interface 36 // functions you don't want/need to implement. 37 /* 38 type UsersResource struct { 39 Resource 40 } 41 42 func (ur *UsersResource) List(c Context) error { 43 return c.Render(200, render.String("hello") 44 } 45 46 // This will fulfill the Resource interface, despite only having 47 // one of the functions defined. 48 &UsersResource{&BaseResource{}) 49 */ 50 type BaseResource struct{} 51 52 // List default implementation. Returns a 404 53 func (v BaseResource) List(c Context) error { 54 return c.Error(404, errors.New("resource not implemented")) 55 } 56 57 // Show default implementation. Returns a 404 58 func (v BaseResource) Show(c Context) error { 59 return c.Error(404, errors.New("resource not implemented")) 60 } 61 62 // New default implementation. Returns a 404 63 func (v BaseResource) New(c Context) error { 64 return c.Error(404, errors.New("resource not implemented")) 65 } 66 67 // Create default implementation. Returns a 404 68 func (v BaseResource) Create(c Context) error { 69 return c.Error(404, errors.New("resource not implemented")) 70 } 71 72 // Edit default implementation. Returns a 404 73 func (v BaseResource) Edit(c Context) error { 74 return c.Error(404, errors.New("resource not implemented")) 75 } 76 77 // Update default implementation. Returns a 404 78 func (v BaseResource) Update(c Context) error { 79 return c.Error(404, errors.New("resource not implemented")) 80 } 81 82 // Destroy default implementation. Returns a 404 83 func (v BaseResource) Destroy(c Context) error { 84 return c.Error(404, errors.New("resource not implemented")) 85 }