]> git.ktnx.net Git - lsl.git/blobdiff - lib/App/LazyShoppingList/API/v1.pm
start item management, delete works
[lsl.git] / lib / App / LazyShoppingList / API / v1.pm
index e48146445eb39926ea9148245f6fb06e1097f331..c13137a4273acc988a463806276315ff0416ce17 100644 (file)
@@ -274,4 +274,36 @@ del '/list/:list_id' => sub {
     return \%r;
 };
 
+# delete shopping list item
+del '/list/:list_id/:item_id' => sub {
+    my $list_id = route_parameters->get('list_id');
+    length($list_id) and $list_id =~ /^\d{1,18}$/
+        or return invalid_input('bad list ID');
+
+    my $item_id = route_parameters->get('item_id');
+    length($item_id) and $item_id =~ /^\d{1,18}$/
+        or return invalid_input('bad item ID');
+
+    my $dbh = get_database;
+
+    my %r = (
+        lists_version => get_lists_version($dbh),
+    );
+
+    my $list = $dbh->resultset('ShoppingList')->find($list_id)
+        or return exception 404, 'No such list';
+
+    my $item = $dbh->resultset('ShoppingListItem')
+        ->find( { shopping_list => $list->id, id => $item_id } );
+
+    if ($item) {
+        $item->delete;
+        $list->update({version => $list->version + 1});
+    }
+
+    $r{list_version} = $list->version;
+
+    return \%r;
+};
+
 true;