End point clean up and alter forwards to method calls in end points
[catagits/Catalyst-Controller-DBIC-API.git] / lib / Catalyst / Controller / DBIC / API / REST.pm
index 474f80d..a66cb8d 100644 (file)
@@ -18,8 +18,8 @@ Provides a REST style API interface to the functionality described in L<Catalyst
 
 By default provides the following endpoints:
 
-  $base (accepts PUT and GET)
-  $base/[identifier] (accepts POST and DELETE)
+  $base (operates on lists of objects and accepts GET, PUT, POST and DELETE)
+  $base/[identifier] (operates on a single object and accepts GET, PUT, POST and DELETE)
 
 Where $base is the URI described by L</setup>, the chain root of the controller, and the request type will determine the L<Catalyst::Controller::DBIC::API> method to forward.
 
@@ -36,49 +36,84 @@ As described in L<Catalyst::Controller::DBIC::API/setup>, this action is the cha
        ...
   );
 
-=method_protected base
+=method_protected no_id
 
-Chained: L</setup>
+Chained: L</objects_no_id>
 PathPart: none
 CaptureArgs: 0
 
-Forwards to list level methods described in L<Catalyst::Controller::DBIC::API> as follows:
+Calls list level methods described in L<Catalyst::Controller::DBIC::API> as follows:
 
-DELETE: forwards to L<Catalyst::Controller::DBIC::API/object> then L<Catalyst::Controller::DBIC::API/delete>
-POST/PUT: forwards to L<Catalyst::Controller::DBIC::API/object> then L<Catalyst::Controller::DBIC::API/update_or_create>
+DELETE: L<Catalyst::Controller::DBIC::API/delete>
+POST/PUT: L<Catalyst::Controller::DBIC::API/update_or_create>
 GET: forwards to L<Catalyst::Controller::DBIC::API/list>
 
 =cut
 
-sub base : Chained('setup') PathPart('') ActionClass('REST') Args {}
+sub no_id : Chained('objects_no_id') PathPart('') ActionClass('REST') :Args(0) {}
 
-sub base_PUT {
+sub no_id_PUT
+{
        my ( $self, $c ) = @_;
-    
-    $c->forward('object');
-    return if $self->get_errors($c);
-    $c->forward('update_or_create');
+    $self->update_or_create($c);
 }
 
-sub base_POST {
+sub no_id_POST
+{
        my ( $self, $c ) = @_;
+    $self->update_or_create($c);
+}
 
-    $c->forward('object');
-    return if $self->get_errors($c);
-    $c->forward('update_or_create');
+sub no_id_DELETE
+{
+       my ( $self, $c ) = @_;
+    $self->delete($c);
 }
 
-sub base_DELETE {
+sub no_id_GET
+{
        my ( $self, $c ) = @_;
-    $c->forward('object');
-    return if $self->get_errors($c);
-    $c->forward('delete');
+    $self->list($c);
 }
 
-sub base_GET {
+=method_protected with_id
+
+Chained: L</object_with_id>
+PathPart: none
+CaptureArgs: 0
+
+Forwards to list level methods described in L<Catalyst::Controller::DBIC::API> as follows:
+
+DELETE: L<Catalyst::Controller::DBIC::API/delete>
+POST/PUT: L<Catalyst::Controller::DBIC::API/update_or_create>
+GET: forwards to L<Catalyst::Controller::DBIC::API/item>
+
+=cut
+
+sub with_id :Chained('object_with_id') :PathPart('') :ActionClass('REST') :Args(0) {}
+
+sub with_id_PUT
+{
+       my ( $self, $c ) = @_;
+    $self->update_or_create($c);
+}
+
+sub with_id_POST
+{
        my ( $self, $c ) = @_;
+    $self->update_or_create($c);
+}
 
-       $c->forward('list');
+sub with_id_DELETE
+{
+       my ( $self, $c ) = @_;
+    $self->delete($c);
+}
+
+sub with_id_GET
+{
+       my ( $self, $c ) = @_;
+    $self->item($c);
 }
 
 1;