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.pm;h=b595fb49ba6bb585c0abdbb5c9619683cd4e94f9;hp=5be57514ac596185bf195a999b98b7bdbc627c54;hb=07b00970f381c386ff40e4f13d5ab3c8bcf72c43;hpb=5a3fd922042f9f0c8281a60014244a70e526f085 diff --git a/lib/Catalyst/Controller/DBIC/API.pm b/lib/Catalyst/Controller/DBIC/API.pm index 5be5751..b595fb4 100644 --- a/lib/Catalyst/Controller/DBIC/API.pm +++ b/lib/Catalyst/Controller/DBIC/API.pm @@ -2,7 +2,7 @@ package Catalyst::Controller::DBIC::API; #ABSTRACT: Provides a DBIx::Class web service automagically use Moose; -BEGIN { extends 'Catalyst::Controller::ActionRole'; } +BEGIN { extends 'Catalyst::Controller'; } use CGI::Expand (); use DBIx::Class::ResultClass::HashRefInflator; @@ -81,8 +81,7 @@ sub begin :Private { my ($self, $c) = @_; - Catalyst::Controller::DBIC::API::Request->meta->apply($c->req) - unless Moose::Util::does_role($c->req, 'Catalyst::Controller::DBIC::API::Request'); + Moose::Util::ensure_all_roles($c->req, 'Catalyst::Controller::DBIC::API::Request'); } =method_protected setup @@ -203,7 +202,7 @@ sub generate_rs { my ($self, $c) = @_; - return $c->model($self->class); + return $c->model($self->class || $c->stash->{class}); } =method_protected inflate_request @@ -818,12 +817,18 @@ sub insert_object_from_params my ($self, undef, $object, $params) = @_; my %rels; - while (my ($k, $v) = each %{ $params }) { - if (ref($v) && !(reftype($v) eq reftype(JSON::true))) { - $rels{$k} = $v; + while (my ($key, $value) = each %{ $params }) { + if (ref($value) && !(reftype($value) eq reftype(JSON::true))) { + $rels{$key} = $value; } + # accessor = colname + elsif ($object->can($key)) { + $object->$key($value); + } + # accessor != colname else { - $object->set_column($k => $v); + my $accessor = $object->result_source->column_info($key)->{accessor}; + $object->$accessor($value); } }