def index_messages(namespace_id, namespace_public_id, created_before=None): """ Index the messages of a namespace. """ if created_before is not None: created_before = dateutil.parser.parse(created_before) indexed_count = 0 search_engine = NamespaceSearchEngine(namespace_public_id) with session_scope() as db_session: query = db_session.query(Message).filter( Message.namespace_id == namespace_id) if created_before is not None: query = query.filter(Message.created_at <= created_before) query = query.options(joinedload(Message.parts). load_only('content_disposition')) encoded = [] for obj in safer_yield_per(query, Message.id, 0, CHUNK_SIZE): encoded_obj = encode(obj, namespace_public_id=namespace_public_id) index_obj = _process_attributes(encoded_obj) encoded.append(('index', index_obj)) log.info('Going to index messages', namespace_id=namespace_id, namespace_public_id=namespace_public_id) indexed_count += search_engine.messages.bulk_index(encoded) log.info('Indexed messages', namespace_id=namespace_id, namespace_public_id=namespace_public_id, message_count=indexed_count) return indexed_count
def index_threads(namespace_id, namespace_public_id, created_before=None): """ Index the threads of a namespace. """ if created_before is not None: created_before = dateutil.parser.parse(created_before) indexed_count = 0 search_engine = NamespaceSearchEngine(namespace_public_id) with session_scope() as db_session: query = db_session.query(Thread).filter( Thread.namespace_id == namespace_id) if created_before is not None: query = query.filter(Thread.created_at <= created_before) query = query.options( subqueryload(Thread.messages).load_only('public_id', 'is_draft', 'from_addr', 'to_addr', 'cc_addr', 'bcc_addr'), subqueryload('tagitems').joinedload('tag').load_only( 'public_id', 'name')) encoded = [] for obj in safer_yield_per(query, Thread.id, 0, CHUNK_SIZE): encoded_obj = encode(obj, namespace_public_id=namespace_public_id) index_obj = _process_attributes(encoded_obj) encoded.append(('index', index_obj)) log.info('Going to index threads', namespace_id=namespace_id, namespace_public_id=namespace_public_id) indexed_count += search_engine.threads.bulk_index(encoded) log.info('Indexed threads', namespace_id=namespace_id, namespace_public_id=namespace_public_id, thread_count=indexed_count) return indexed_count
def index_threads(namespace_id, namespace_public_id, created_before=None): """ Index the threads of a namespace. """ if created_before is not None: created_before = dateutil.parser.parse(created_before) indexed_count = 0 search_engine = NamespaceSearchEngine(namespace_public_id) with session_scope() as db_session: query = db_session.query(Thread).filter( Thread.namespace_id == namespace_id) if created_before is not None: query = query.filter(Thread.created_at <= created_before) query = query.options( subqueryload(Thread.messages). load_only('public_id', 'is_draft', 'from_addr', 'to_addr', 'cc_addr', 'bcc_addr'), subqueryload('tagitems').joinedload('tag'). load_only('public_id', 'name')) encoded = [] for obj in safer_yield_per(query, Thread.id, 0, CHUNK_SIZE): encoded_obj = encode(obj, namespace_public_id=namespace_public_id) index_obj = _process_attributes(encoded_obj) encoded.append(('index', index_obj)) log.info('Going to index threads', namespace_id=namespace_id, namespace_public_id=namespace_public_id) indexed_count += search_engine.threads.bulk_index(encoded) log.info('Indexed threads', namespace_id=namespace_id, namespace_public_id=namespace_public_id, thread_count=indexed_count) return indexed_count
def index_messages(namespace_id, namespace_public_id, created_before=None): """ Index the messages of a namespace. """ if created_before is not None: created_before = dateutil.parser.parse(created_before) indexed_count = 0 search_engine = NamespaceSearchEngine(namespace_public_id) with session_scope() as db_session: query = db_session.query(Message).filter( Message.namespace_id == namespace_id) if created_before is not None: query = query.filter(Message.created_at <= created_before) query = query.options( joinedload(Message.parts).load_only('content_disposition')) encoded = [] for obj in safer_yield_per(query, Message.id, 0, CHUNK_SIZE): encoded_obj = encode(obj, namespace_public_id=namespace_public_id) index_obj = _process_attributes(encoded_obj) encoded.append(('index', index_obj)) log.info('Going to index messages', namespace_id=namespace_id, namespace_public_id=namespace_public_id) indexed_count += search_engine.messages.bulk_index(encoded) log.info('Indexed messages', namespace_id=namespace_id, namespace_public_id=namespace_public_id, message_count=indexed_count) return indexed_count