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

[email protected] Mon, 25 Feb 2008 12:54:43 -0800 (PST)
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
Author: spadkins
Date: Mon Feb 25 12:54:42 2008
New Revision: 10825

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

Log:
enable param substitutions in dbexpr's

Modified: p5ee/trunk/App-Repository/CHANGES
==============================================================================
--- p5ee/trunk/App-Repository/CHANGES	(original)
+++ p5ee/trunk/App-Repository/CHANGES	Mon Feb 25 12:54:42 2008
@@ -3,6 +3,7 @@
 #########################################
 
 0.966 (not yet released)
+ x App::Repository::mk_select_joined_sql(): enable param substitutions in dbexpr's
  x App::Repository::get_rows()/get_row(): use query caching if turned on for the table ({cache_name} => "name_of_shared_datastore")
  x App::Repository::create_temporary_object_set(): can create a temporary object set with data, not bound to the database
  x App::Repository::create_temporary_object_domain(): can create a temporary object domain with data, not bound to the database

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	Mon Feb 25 12:54:42 2008
@@ -1116,6 +1116,13 @@
         }
 
         ############################################################
+        # allow param substitutions in dbexpr
+        ############################################################
+        if ($dbexpr =~ /{/) {
+            $dbexpr = $self->substitute($dbexpr, $params);
+        }
+
+        ############################################################
         # accumulate select expressions and their aliases
         ############################################################
         if ($is_summary) {

Modified: p5ee/trunk/App-Repository/t/DBI-getset.t
==============================================================================
--- p5ee/trunk/App-Repository/t/DBI-getset.t	(original)
+++ p5ee/trunk/App-Repository/t/DBI-getset.t	Mon Feb 25 12:54:42 2008
@@ -41,6 +41,11 @@
                 table => {
                     test_person => {
                         primary_key => ["person_id"],
+                        column => {
+                            years_older => {
+                                dbexpr => "age-{base_age:0}",
+                            },
+                        },
                     },
                 },
             },
@@ -229,6 +234,16 @@
 is($#$hashes+1, 1, "get_hashes not_matches (?A)");
 
 #print $rep->{sql};
+
+#####################################################################
+# dbexpr with substitutions
+#####################################################################
+my ($years_older);
+$years_older = $rep->get("test_person", {person_id => 1}, "years_older");
+is($years_older, 41, "get() years_older [$years_older] base_age is undef");
+$years_older = $rep->get("test_person", {person_id => 1, base_age => 20}, "years_older");
+is($years_older, 21, "get() years_older [$years_older] base_age = 20");
+
 exit(0);
 #####################################################################
 #  $rep->set_rows($table, undef,    \@cols, $rows, \%options);