Make tests pass for new definitive chaining
[catagits/Catalyst-Controller-DBIC-API.git] / lib / Catalyst / Controller / DBIC / API / REST.pm
index 474f80d..23655e2 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:
 
-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') {}
 
-sub base_PUT {
+sub no_id_PUT
+{
        my ( $self, $c ) = @_;
-    
-    $c->forward('object');
-    return if $self->get_errors($c);
     $c->forward('update_or_create');
 }
 
-sub base_POST {
+sub no_id_POST
+{
        my ( $self, $c ) = @_;
-
-    $c->forward('object');
-    return if $self->get_errors($c);
     $c->forward('update_or_create');
 }
 
-sub base_DELETE {
+sub no_id_DELETE
+{
        my ( $self, $c ) = @_;
-    $c->forward('object');
-    return if $self->get_errors($c);
     $c->forward('delete');
 }
 
-sub base_GET {
+sub no_id_GET
+{
        my ( $self, $c ) = @_;
-
        $c->forward('list');
 }
 
+=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') {}
+
+sub with_id_PUT
+{
+       my ( $self, $c ) = @_;
+    $c->forward('update_or_create');
+}
+
+sub with_id_POST
+{
+       my ( $self, $c ) = @_;
+    $c->forward('update_or_create');
+}
+
+sub with_id_DELETE
+{
+       my ( $self, $c ) = @_;
+    $c->forward('delete');
+}
+
+sub with_id_GET
+{
+       my ( $self, $c ) = @_;
+       $c->forward('item');
+}
+
 1;