chiark / gitweb /
Query-specific "var"s
[ypp-sc-tools.db-test.git] / yarrg / web / lookup
index 1b85ecc8b9d06b9dc5ba96b14b63e4cac99501c0..0b6466e3f6a4fc53a61fc4202643fddc67f3b438 100755 (executable)
@@ -58,6 +58,14 @@ my %styles;
                Values => [     [ 'route', 'Trades for route' ],
                                [ 'commod', 'Prices for commodity' ],
                                [ 'age', 'Data age' ] ]
+       }, {    Name => 'BuySell',
+               Before => '',
+               Values => [     [ 'buy_sell',   'Buy and sell' ],
+                               [ 'sell_buy',   'Sell and buy' ],
+                               [ 'buy',        'Buy offers only' ],
+                               [ 'sell',       'Sell offers only' ],
+                       ],
+               QuerySpecific => 1,
        });
 
 foreach my $var (@vars) {
@@ -127,7 +135,8 @@ my $quri= sub {
        $uri->path_query();
 };
 
-foreach my $var (@vars) {
+my $prselector_core= sub {
+       my ($var)= @_;
        my $name= $var->{Name};
        my $lname= lc $var->{Name};
        my $delim= $var->{Before};
@@ -154,13 +163,30 @@ foreach my $var (@vars) {
                $cvalix++;
        }
        print "<p>\n\n";
+};
+
+my $prselector= sub {
+       my ($name)= @_;
+       foreach my $var (@vars) {
+               if ($var->{Name} eq $name) {
+                       $prselector_core->($var);
+                       return;
+               }
+       }
+       die $name;
+};
+
+foreach my $var (@vars) {
+       next if $var->{QuerySpecific};
+       $prselector_core->($var);
 }
 
 #---------- initial checks, startup, main entry form ----------
 
 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 {
@@ -176,7 +202,9 @@ $debug => 0
 
 <hr>
 
-<& "query_$styles{Query}", %baseqf, %queryqf, %styles, quri => $quri,
+<& "query_$styles{Query}", %baseqf, %queryqf, %styles,
+    quri => $quri, dbh => $dbh,
+    prselector => $prselector,
     someresults => $someresults,
     emsgokorprint => sub {
        my ($emsg) = @_;
@@ -215,3 +243,8 @@ use HTML::Entities;
 use URI::Escape;
 
 </%init>
+<%cleanup>
+
+$mydbh->rollback() if $mydbh;
+
+</%cleanup>