chiark / gitweb /
Pass $dbh down through the stack, for better lifetime
[ypp-sc-tools.web-live.git] / yarrg / web / lookup
index 64860fd5f9db94e83105e83b50ad43e433b286db..f194fc5d56d2cb3f4a6a2e955dd0b84c3493cfc2 100755 (executable)
@@ -160,7 +160,15 @@ foreach my $var (@vars) {
 
 die if $styles{Query} =~ m/[^a-z]/;
 
-dbw_connect($styles{Ocean});
+my $mydbh;
+my $dbh= ($mydbh= dbw_connect($styles{Ocean}));
+
+my $results_head_done=0;
+my $someresults= sub {
+       return if $results_head_done;
+       $results_head_done=1;
+       print "\n<h1>Results</h1>\n";
+};
 
 </%perl>
 <%args>
@@ -169,7 +177,17 @@ $debug => 0
 
 <hr>
 
-<& "query_$styles{Query}", %baseqf, %queryqf, %styles, quri => $quri &>
+<& "query_$styles{Query}", %baseqf, %queryqf, %styles,
+    quri => $quri, dbh => $dbh,
+    someresults => $someresults,
+    emsgokorprint => sub {
+       my ($emsg) = @_;
+       return 1 unless defined $emsg and length $emsg;
+       $someresults->();
+       print $emsg;
+       return 0;
+    }
+ &>
 
 <p>
 
@@ -199,3 +217,8 @@ use HTML::Entities;
 use URI::Escape;
 
 </%init>
+<%cleanup>
+
+$mydbh->rollback() if $mydbh;
+
+</%cleanup>