use experimental 'signatures';
set charset => 'UTF-8';
-set serializer => 'JSON';
-set content_type => 'application/json';
-
+set serializer => 'JSON';
# get the URI for the list of shopping lists
get '/' => sub {
my $name = $req->{name};
unless ($name) {
- status 400;
- content_type 'text/plain';
- return "Missing list name";
+ return exception 400, "Missing list name";
}
my $dbh = get_database;
unless ($list) {
$dbh->txn_commit;
- status 404;
- content_type 'text/plain';
- return "No list with that ID found";
+ return exception 404, "No list with that ID found";
}
$r{version} = $list->version;
- my @items = $dbh->resultset('ShoppingListItem')
- ->search( undef, { order_by => { -asc => 'id' } } )->all;
+ my @items = $dbh->resultset('ShoppingListItem')->search(
+ { shopping_list => $list->id },
+ { order_by => { -asc => 'id' } }
+ )->all;
for my $item (@items) {
push @{ $r{items} },
{ uri =>
unless ($list) {
$dbh->txn_commit;
- status 404;
- content_type 'text/plain';
- return "No such list";
+ exception 404, "No such list";
}
my $item = $dbh->resultset('ShoppingListItem')->create(
my $list = $dbh->resultset('ShoppingList')->find($list_id);
unless ($list) {
$dbh->txn_commit;
- status 404;
- content_type 'text/plain';
- return "No such list";
+ return exception 404, "No such list";
}
my $item = $dbh->resultset('ShoppingListItem')->find({shopping_list => $list->id, id => $item_id});
unless ($item) {
$dbh->txn_commit;
- status 404;
- content_type 'text/plain';
- return "No such item";
+ return exception 404, "No such item";
}
# in case no real changes are needed will return the current state
{
unless ($version == $item->version) {
$dbh->txn_commit;
- status 409;
- content_type 'text/plain';
- return
+ return exception 409,
sprintf( 'Outdated version (current is %d)', $item->version );
}