def convert_domain(self, domain, tables, Model): name, operator, value = domain[:3] if operator not in {'in', 'not in'}: return super().convert_domain(domain, tables, Model) database = Transaction().database table, _ = tables[None] raw_column = self.sql_column(table) if isinstance(value, str): try: expression = database.json_key_exists(raw_column, value) except NotImplementedError: expression = operators.Like(raw_column, '%' + dumps(value) + '%') else: try: expression = database.json_any_keys_exist( raw_column, list(value)) except NotImplementedError: expression = Literal(False) for item in value: expression |= operators.Like(raw_column, '%' + dumps(item) + '%') if operator == 'not in': expression = operators.Not(expression) return expression
def getLike(self, likeCol, colVal, wantCols=None): where = (sqlo.Like(self.keyToCol(likeCol), colVal + '%')) return self.getItems(wantCols=wantCols, where=where)
def getPhashLikeBasePath(self, basePath): where = (sqlo.Like(self.table.fspath, basePath + '%')) & (self.table.phash != None) return self.getItems(wantCols=["dbId", "pHash"], where=where)