X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Controller-DBIC-API.git;a=blobdiff_plain;f=lib%2FCatalyst%2FController%2FDBIC%2FAPI%2FRPC.pm;h=abcf404d9e48ff3d2f2aba2e1ba9d2fe540d7e60;hp=4fc764abb68186fa2b0943f9bdcd07225817da7d;hb=533075c7cc1bfd0ed993d273314ad46f0d85401b;hpb=d273984026646e5b57c052deef3fcb9121122060 diff --git a/lib/Catalyst/Controller/DBIC/API/RPC.pm b/lib/Catalyst/Controller/DBIC/API/RPC.pm index 4fc764a..abcf404 100644 --- a/lib/Catalyst/Controller/DBIC/API/RPC.pm +++ b/lib/Catalyst/Controller/DBIC/API/RPC.pm @@ -5,7 +5,7 @@ use Moose; BEGIN { extends 'Catalyst::Controller::DBIC::API'; } __PACKAGE__->config( - 'action' => { object => { PathPart => 'id' } }, + 'action' => { object_with_id => { PathPart => 'id' } }, 'default' => 'application/json', 'stash_key' => 'response', 'map' => { @@ -22,6 +22,7 @@ By default provides the following endpoints: $base/create $base/list + $base/id/[identifier] $base/id/[identifier]/delete $base/id/[identifier]/update @@ -40,14 +41,6 @@ As described in L, this action is the cha ... ); -=method_protected object - -Chained: L -PathPart: object -CaptureArgs: 1 - -Provides an chain point to the functionality described in L. All object level endpoints should use this as their chain root. - =cut sub index : Chained('setup') PathPart('') Args(0) { @@ -59,7 +52,7 @@ sub index : Chained('setup') PathPart('') Args(0) { =method_protected create -Chained: L +Chained: L PathPart: create CaptureArgs: 0 @@ -67,17 +60,15 @@ Provides an endpoint to the functionality described in Lforward('object'); - return if $self->get_errors($c); $c->forward('update_or_create'); } =method_protected list -Chained: L +Chained: L PathPart: list CaptureArgs: 0 @@ -85,42 +76,90 @@ Provides an endpoint to the functionality described in Lnext::method($c); +} + +=method_protected item + +Chained: L +PathPart: '' +Args: 0 + +Provides an endpoint to the functionality described in L. + +=cut - $self->next::method($c); +sub item :Chained('object_with_id') :PathPart('') +{ + my ($self, $c) = @_; + $self->next::method($c); } =method_protected update -Chained: L +Chained: L PathPart: update -CaptureArgs: 0 +Args: 0 Provides an endpoint to the functionality described in L. =cut -sub update :Chained('object') :PathPart('update') :Args(0) { - my ($self, $c) = @_; - +sub update :Chained('object_with_id') :PathPart('update') +{ + my ($self, $c) = @_; $c->forward('update_or_create'); } =method_protected delete -Chained: L +Chained: L PathPart: delete -CaptureArgs: 0 +Args: 0 Provides an endpoint to the functionality described in L. =cut -sub delete :Chained('object') :PathPart('delete') :Args(0) { - my ($self, $c) = @_; +sub delete :Chained('object_with_id') :PathPart('delete') +{ + my ($self, $c) = @_; + $self->next::method($c); +} + +=method_protected update_bulk + +Chained: L +PathPart: update +Args: 0 + +Provides an endpoint to the functionality described in L for multiple objects. + +=cut + +sub update_bulk :Chained('objects_no_id') :PathPart('update') +{ + my ($self, $c) = @_; + $c->forward('update_or_create'); +} + +=method_protected delete_bulk + +Chained: L +PathPart: delete +Args: 0 - $self->next::method($c); +Provides an endpoint to the functionality described in L for multiple objects. + +=cut + +sub delete_bulk :Chained('objects_no_id') :PathPart('delete') +{ + my ($self, $c) = @_; + $self->next::method($c); } 1;