Ejemplo n.º 1
0
def batch_delete(before_datetime=None, before_months=None):
    before_datetime = before_datetime or datetimes.get_datetime_months_ago(
        before_months)
    params = {
        'reduce': 'false',
        'endkey': datetimes.to_timestamp(before_datetime)
    }
    with couch.RestDatabase() as database:
        results = database.get_view('analyses', 'datetime_revs', params=params)
    if not results: return
    docs = map(get_doc_delete, results.get('rows', []))
    if not docs: return
    with couch.RestDatabase() as database:
        return database.post_docs(docs)
Ejemplo n.º 2
0
def get_view_results(design, view, params, options=None):
    if options: params.update(options)
    with couch.RestDatabase() as database:
        results = database.get_view(design, view, params=params)
    if not results: return []
    return ((row['key'], row['value']) for row in results.get('rows', [])
            if row['value'])
Ejemplo n.º 3
0
def search_query(facets=None, sorts=None, **optional_params):
    facets = facets or {}
    with couch.RestDatabase() as database:
        return database.search('queries',
                               'facets',
                               facets=facets,
                               sorts=sorts,
                               **optional_params)
Ejemplo n.º 4
0
def save(iter_analyses):
    analyses = [analysis for analysis in iter_analyses if analysis]
    if not analyses: return
    with couch.RestDatabase() as database:
        response = database.post_docs(analyses)
        if 'error' in response and not response.get('reason'):
            logging.warning(
                u'Bulk insert failed, switching to individual insert')
            map(database.post_doc, analyses)
Ejemplo n.º 5
0
def get_feed_throughputs():
    params = {
        'descending': 'true',
        'stale': 'ok',
        'limit': 7,
        'group_level': 3,  # NOTE: group on day
    }
    with couch.RestDatabase() as database:
        results = database.get_view('feeds', 'datetime', params=params)
    if not results or 'rows' not in results or not results['rows']: return
    for row in results['rows']:
        key = [i for i in row['key'] if i]
        if not key: continue
        yield key, row['value']
Ejemplo n.º 6
0
def get_query_count(query, date):
    expected_key = [query, date.year, date.month, date.day]
    params = {
        'group_level': 4,  # NOTE: group on day
        'limit': 1,
        'startkey': json.dumps(expected_key),
    }
    with couch.RestDatabase() as database:
        results = database.get_view('overview', 'datetime', params=params)
    try:
        first = results['rows'][0]
        if first['key'] != expected_key: return 0
        return int(first['value']['count'])
    except (KeyError, IndexError) as error:
        return 0
Ejemplo n.º 7
0
def search_query(query,
                 timeframe=None,
                 facets=None,
                 sorts=None,
                 **optional_params):
    facets = facets or {}
    if timeframe:
        datetime_facet = u'[{0} TO {1}]'.format(
            *map(datetimes.to_timestamp, timeframe))
        facets.update({'datetime': datetime_facet})
    with couch.RestDatabase() as database:
        return database.search('queries',
                               'facets',
                               query,
                               facets=facets,
                               sorts=sorts,
                               **optional_params)
Ejemplo n.º 8
0
def get_all_docs_texts():
    params = {'group_level': 0}
    with couch.RestDatabase() as database:
        results = database.get_view('aggregate', 'texts', params=params)
        return results['rows'][0]['value']
Ejemplo n.º 9
0
def get_total_doc_count():
    with couch.RestDatabase() as database:
        return database.get_db_info().get('doc_count') or 0
Ejemplo n.º 10
0
def get_doc(doc_id):
    with couch.RestDatabase() as database:
        doc = database.get_doc(doc_id)
        doc.pop('_id')
        doc.pop('query')
        return doc
Ejemplo n.º 11
0
def update_doc(doc_id, **updates):
    with couch.RestDatabase() as database:
        return database.post_update('analyses',
                                    'analysis',
                                    doc_id,
                                    params=updates)
Ejemplo n.º 12
0
def get_database(for_salesforce=False):
    db_variables = get_db_variables(for_salesforce)
    return couch.RestDatabase(*db_variables)