[svn:p5ee] r9851 - in p5ee/trunk/App-Repository/lib/App: . Repository

[email protected]
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
Author: spadkins
Date: Fri Aug 17 11:29:15 2007
New Revision: 9851

Modified:
   p5ee/trunk/App-Repository/lib/App/Repository.pm
   p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm

Log:
enable the 'table_def' option in get_rows() to override or supplement table_def entries already in the config

Modified: p5ee/trunk/App-Repository/lib/App/Repository.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository.pm	(original)
+++ p5ee/trunk/App-Repository/lib/App/Repository.pm	Fri Aug 17 11:29:15 2007
@@ -2352,20 +2352,26 @@
 
 sub get_table_def {
     &App::sub_entry if ($App::trace);
-    my ($self, $table) = @_;
+    my ($self, $table, $options) = @_;
     my $repname = $self->{table}{$table}{repository};
     my $realtable = $self->{table}{$table}{table} || $table;
     my ($table_def);
     if (defined $repname && $repname ne $self->{name}) {
         my $rep = $self->{context}->repository($repname);
-        $table_def = $rep->get_table_def($realtable);
+        $table_def = $rep->get_table_def($realtable, $options);
     }
     elsif (defined $realtable && $realtable ne $table) {
-        $table_def = $self->get_table_def($realtable);
+        $table_def = $self->get_table_def($realtable, $options);
     }
     else {
         $self->_load_table_metadata($table) if (! defined $self->{table}{$table}{loaded});
-        $table_def = $self->{table}{$table};
+        if ($options->{table_def}) {
+            $table_def = $options->{table_def};
+            App::Reference->overlay($table_def, $self->{table}{$table});
+        }
+        else {
+            $table_def = $self->{table}{$table};
+        }
     }
     &App::sub_exit($table_def) if ($App::trace);
     return($table_def);

Modified: p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm	(original)
+++ p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm	Fri Aug 17 11:29:15 2007
@@ -932,6 +932,9 @@
     $self->_load_table_metadata($table) if (!defined $self->{table}{$table}{loaded});
     my $dbh = $self->{dbh};
 
+    my $table_def = $self->get_table_def($table, $options);
+    die "Table $table not defined" if (!$table_def);
+
     if (!defined $params || $params eq "") {
         $params = {};
     }
@@ -950,7 +953,7 @@
     my ($where_condition, @join_conditions, @criteria_conditions, $repop, $sqlop, $value);
 
     # ADD ANY DEFAULT PARAMS
-    my $paramdefs = $self->{table}{$table}{param};
+    my $paramdefs = $table_def->{param};
     my $params_modified = 0;
     if ($paramdefs) {
         # make a copy.
@@ -992,10 +995,7 @@
     my $reptyperef  = $options->{reptyperef};
     my $group_by    = $options->{group_by} || $options->{summarykeys};
 
-    my ($table_def, $tablealiases, $tablealiashref);
-
-    $table_def = $self->{table}{$table};
-    die "Table $table not defined" if (!$table_def);
+    my ($tablealiases, $tablealiashref);
 
     $tablealiases   = $table_def->{tablealiases};
     $tablealiashref = $table_def->{tablealias};
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.