from ..adapters.couchdb import CouchDB from .base import NoSQLDialect from . import dialects @dialects.register_for(CouchDB) class CouchDBDialect(NoSQLDialect): def _and(self, first, second, query_env={}): return "(%s && %s)" % ( self.expand(first, query_env=query_env), self.expand(second, query_env=query_env), ) def _or(self, first, second, query_env={}): return "(%s || %s)" % ( self.expand(first, query_env=query_env), self.expand(second, query_env=query_env), ) def eq(self, first, second=None, query_env={}): if second is None: return "(%s == null)" % self.expand(first, query_env=query_env) return "(%s == %s)" % ( self.expand(first, query_env=query_env), self.expand(second, first.type, query_env=query_env), ) def ne(self, first, second=None, query_env={}): if second is None: return "(%s != null)" % self.expand(first, query_env=query_env) return "(%s != %s)" % ( self.expand(first, query_env=query_env), self.expand(second, first.type, query_env=query_env), ) def comma(self, first, second, query_env={}): return "%s + %s" % ( self.expand(first, query_env=query_env), self.expand(second, query_env=query_env), )