}
}
+sub cancel {
+ my ($order) = @_;
+ $db{$$} //= DBIx::Simple->connect($ENV{OOF_DSN} // 'dbi:Pg:');
+ $order = $db{$$}->select(orders => '*', {id => $order})->hash;
+ my $products = decode_json $order->{products};
+ $db{$$}->begin_work;
+ try {
+ for my $prod (@$products) {
+ my $stock = $db{$$}->select(products => 'stock', {product => $prod->{product}})->list;
+ $db{$$}->update(products => {stock => $stock + $prod->{quantity}}, {product => $prod->{product}});
+ }
+ $db{$$}->delete(orders => {id => $order->{id}});
+ $db{$$}->commit;
+ } catch {
+ $db{$$}->rollback;
+ die $_
+ }
+}
+
sub details_list_element {
my ($data, $li) = @_;
$li->find('a')->attr(href => "/$data");