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))