コード例 #1
0
 def testJoin(self):
   storage_one = Midgard.QueryStorage(dbclass = "midgard_person")
   storage_two = Midgard.QueryStorage(dbclass = "midgard_person")
   qs = Midgard.QuerySelect(connection = self.mgd, storage = storage_one)
   group = Midgard.QueryConstraintGroup(grouptype = "AND")
   constraint_one = Midgard.QueryConstraint(
     property = Midgard.QueryProperty(property = "firstname"),
     operator = "=",
     holder = Midgard.QueryValue.create_with_value("Alice")
   )
   constraint_two = Midgard.QueryConstraint(
     property = Midgard.QueryProperty(property = "firstname", storage = storage_two),
     operator = "=",
     holder = Midgard.QueryValue.create_with_value("John")
   )
   group.add_constraint(constraint_one)
   group.add_constraint(constraint_two)
   qs.set_constraint(group)
   qs.add_join(
     "LEFT",
     Midgard.QueryProperty(property = "lastname"),
     Midgard.QueryProperty(property = "lastname", storage = storage_two)
   )
   qs.execute()
   # We expect Alice person only
   self.assertEqual(qs.get_results_count(), 1)
   objects = qs.list_objects()
   self.assertEqual(objects[0].get_property("firstname"), "Alice")
  def testValidateConstraintGroup(self):
    storage = Midgard.QueryStorage(dbclass = "midgard_snippet")
    columnA = Midgard.SqlQueryColumn(
      queryproperty = Midgard.QueryProperty(property = "name", storage = storage),
      name = "a",
      qualifier = "tblA"
    )
    self.select.add_column(columnA)

    columnB = Midgard.SqlQueryColumn(
      queryproperty = Midgard.QueryProperty(property = "code", storage = storage),
      name = "b",
      qualifier = "tblA"
    )
    self.select.add_column(columnB)

    cg = Midgard.QueryConstraintGroup(grouptype = "AND")
    cg.add_constraint(
      Midgard.SqlQueryConstraint(
        column = columnA,
        operator = "<>",
        holder = Midgard.QueryValue.create_with_value("")
      )
    )
    cg.add_constraint(
      Midgard.SqlQueryConstraint(
        column = columnB,
        operator = "<>",
        holder = Midgard.QueryValue.create_with_value("")
      )
    )

    self.select.set_constraint(cg)
    # Validate constraints during execution
    self.select.execute()
コード例 #3
0
 def testConstraintGroupType(self):
   group = Midgard.QueryConstraintGroup(grouptype = "AND")
   self.assertEqual(group.get_property("grouptype"), "AND")
   self.assertEqual(group.get_group_type(), "AND")
   self.assertTrue(group.set_group_type("OR"))
   self.assertFalse(group.set_group_type("INVALID"))
 def testInheritance(self):
   cg = Midgard.QueryConstraintGroup(grouptype = "AND")
   self.assertIsInstance(cg, Midgard.QueryConstraintSimple)
   self.assertIsInstance(cg, Midgard.Validable)