[limb-svn] r6044 - in 3.x/trunk/limb/dbal: src/criteria tests/cases/non-driver/criteria

svn at limb-project.com svn at limb-project.com
Mon Jul 2 17:39:54 MSD 2007


Author: pachanga
Date: 2007-07-02 17:39:54 +0400 (Mon, 02 Jul 2007)
New Revision: 6044
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6044

Modified:
   3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php
   3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php
   3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php
Log:
-- convenience static factory methods added into lmbSQLCriteria:
  * not($criteria) - negates criteria
  * in($field, $values) - returns in criteria for field
  * equal($field, $value) - returns equal criteria for field
  * like($field, $value) - return like criteria for field
  * between($field, $values) - returns between criteria for field
  * isNull($field) - returns is null criteria for field

Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php	2007-07-02 12:54:09 UTC (rev 6043)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php	2007-07-02 13:39:54 UTC (rev 6044)
@@ -1,20 +1,20 @@
 <?php
-/*
- * Limb PHP Framework
- *
- * @link http://limb-project.com 
- * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 //inspired by Propel Criteria(http://propel.phpdb.org)
-lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
-
+lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
+
 /**
  * abstract class lmbSQLBaseCriteria.
  *
  * @package dbal
  * @version $Id$
- */
+ */
 abstract class lmbSQLBaseCriteria
 {
   const _AND_ = " AND ";
@@ -31,6 +31,11 @@
     return $this;
   }
 
+  function add($criteria)
+  {
+    return $this->addAnd($criteria);
+  }
+
   function addOr($criteria)
   {
     $this->clauses[] = lmbSQLCriteria :: objectify($criteria);

Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php	2007-07-02 12:54:09 UTC (rev 6043)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php	2007-07-02 13:39:54 UTC (rev 6044)
@@ -7,6 +7,8 @@
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 lmb_require(dirname(__FILE__) . '/lmbSQLRawCriteria.class.php');
+lmb_require(dirname(__FILE__) . '/lmbSQLFieldBetweenCriteria.class.php');
+lmb_require(dirname(__FILE__) . '/lmbSQLFieldCriteria.class.php');
 
 /**
  * class lmbSQLCriteria.
@@ -24,6 +26,44 @@
     parent :: __construct($raw_criteria, $values);
   }
 
+  /**
+   * Used for chaining
+   */
+  static function create($raw_criteria = '', $values = array())
+  {
+    return new lmbSQLCriteria($raw_criteria, $values);
+  }
+
+  static function not($criteria)
+  {
+    return new lmbSQLCriteria('!(' . self :: objectify($criteria)->toStatementString() . ')');
+  }
+
+  static function between($column, $value_from, $value_to)
+  {
+    return new lmbSQLFieldBetweenCriteria($column, $value_from, $value_to);
+  }
+
+  static function in($column, $value)
+  {
+    return new lmbSQLFieldCriteria($column, $value, lmbSQLFieldCriteria :: IN);
+  }
+
+  static function equal($column, $value)
+  {
+    return new lmbSQLFieldCriteria($column, $value, lmbSQLFieldCriteria :: EQUAL);
+  }
+
+  static function like($column, $value)
+  {
+    return new lmbSQLFieldCriteria($column, $value, lmbSQLFieldCriteria :: LIKE);
+  }
+
+  static function isNull($column)
+  {
+    return new lmbSQLFieldCriteria($column, null, lmbSQLFieldCriteria :: IS_NULL);
+  }
+
   static function objectify($args)
   {
     if(is_null($args))

Modified: 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php	2007-07-02 12:54:09 UTC (rev 6043)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php	2007-07-02 13:39:54 UTC (rev 6044)
@@ -7,7 +7,6 @@
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
-lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
 
 class lmbSQLCriteriaTest extends UnitTestCase
 {
@@ -34,6 +33,48 @@
     $criteria = new lmbSQLCriteria('2 = 2');
     $this->assertEqual($criteria->toStatementString(), '2 = 2');
   }
+
+  function testCreate()
+  {
+    $criteria = lmbSQLCriteria :: create('2 = 2');
+    $this->assertEqual($criteria->toStatementString(), '2 = 2');
+  }
+
+  function testNot()
+  {
+    $criteria = lmbSQLCriteria :: not(new lmbSQLRawCriteria("id = 1"));
+    $this->assertEqual($criteria->toStatementString(), "!(id = 1)");
+  }
+
+  function testBetween()
+  {
+    $criteria = lmbSQLCriteria :: between('id', 1, 100);
+    $this->assertEqual($criteria, new lmbSQLFieldBetweenCriteria('id', 1, 100));
+  }
+
+  function testIn()
+  {
+    $criteria = lmbSQLCriteria :: in('id', array(1, 2));
+    $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', array(1, 2), lmbSQLFieldCriteria :: IN));
+  }
+
+  function testEqual()
+  {
+    $criteria = lmbSQLCriteria :: equal('id', 1);
+    $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', 1, lmbSQLFieldCriteria :: EQUAL));
+  }
+
+  function testLike()
+  {
+    $criteria = lmbSQLCriteria :: like('id', '%foo%');
+    $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', '%foo%', lmbSQLFieldCriteria :: LIKE));
+  }
+
+  function testIsNull()
+  {
+    $criteria = lmbSQLCriteria :: isNull('id');
+    $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', null, lmbSQLFieldCriteria :: IS_NULL));
+  }
 }
 
 ?>



More information about the limb-svn mailing list