Author: spadkins
Date: Fri Nov 17 20:30:26 2006
New Revision: 8083

Modified:
   p5ee/trunk/App-Repository/bin/dbget

Log:
support --totals and --subtotal_columns options

Modified: p5ee/trunk/App-Repository/bin/dbget
==============================================================================
--- p5ee/trunk/App-Repository/bin/dbget (original)
+++ p5ee/trunk/App-Repository/bin/dbget Fri Nov 17 20:30:26 2006
@@ -3,7 +3,7 @@
 use Date::Format;
 
 use App::Options (
-    options => [ qw(dbhost dbname dbuser dbpass repository table params 
columns headings compact verbose) ],
+    options => [ qw(dbhost dbname dbuser dbpass repository table params 
columns headings compact subtotal_columns totals verbose) ],
     option => {
         repository => {
             default => "default",
@@ -26,6 +26,12 @@
         compact => {
             description => "Trim titles to make compact table",
         },
+        subtotal_columns => {
+            description => "Print sub-totals at the end",
+        },
+        totals => {
+            description => "Print totals at the end",
+        },
         verbose => {
             default => 1,
             description => "Verbose level",
@@ -52,7 +58,21 @@
     my $params   = { split(/[=>\|]+/, $App::options{params}) };
     my $headings = $App::options{headings} ? [ split(/,/, 
$App::options{headings}) ] : [];
     my $verbose  = $App::options{verbose};
-    my $rows     = $db->get_rows($table, $params, $columns);
+    my $rows     = $db->get_rows($table, $params, $columns, {extend_columns => 
1});
+    my ($subtotal_rows, $total_rows);
+    if ($App::options{subtotal_columns}) {
+        my $subtotal_columns = [ split(/,/, $App::options{subtotal_columns}) ];
+        $subtotal_rows = $db->summarize_rows($table, $rows, $columns, 
$subtotal_columns);
+    }
+    if ($App::options{totals}) {
+        $total_rows = $db->summarize_rows($table, $rows, $columns);
+    }
+    if ($subtotal_rows) {
+        push(@$rows, @$subtotal_rows);
+    }
+    if ($total_rows) {
+        push(@$rows, @$total_rows);
+    }
     my $formats  = [];
     &print_table($rows, $columns, $formats, { compact => 
$App::options{compact}, headings => $headings });
 }

Reply via email to