def createAttrGroup(self, attr_name, attr_values, op, cast_to=""): """ attr_values(list or iterable object): list of values """ group = SearchGroup("and") group.addGroup("%s.%s = %s" % (self.getTableName(), self.name_col, dbText(attr_name))) sub_group = SearchGroup("or") attr_value = "%s.%s" % (self.getTableName(), self.value_col) if cast_to != "": attr_value = "cast(%s as %s)" % (attr_value, cast_to) map( lambda value: sub_group.addGroup("%s %s cast(%s as %s)" % ( attr_value, op, dbText(value), cast_to)), attr_values) else: map( lambda value: sub_group.addGroup("%s %s %s" % (attr_value, op, dbText(value))), attr_values) group.addGroup(sub_group) return group
def __userOwnersConditionQuery(self, owner_ids): cond_group = SearchGroup("or") map( lambda owner_id: cond_group.addGroup("users.owner_id=%s" % owner_id ), owner_ids) return "connection_log.user_id in (select user_id from users where %s)" % cond_group.getConditionalClause( )
def search(self, db_name, values, op, cast_to=""): """ add a condition, for "db_name op values" values should be iterable object """ group = SearchGroup("or") map( lambda value: group.addGroup( self.createColGroup(db_name, value, op, cast_to)), values) self.addGroup(group)
def __init__(self, table_name): self._root_group = SearchGroup("and") self.table_name = table_name