def _run_custom_sql_script(command, day=None):
    db_alias = get_icds_ucr_citus_db_alias()
    if not db_alias:
        return

    with connections[db_alias].cursor() as cursor:
        cursor.execute(command, [day])
Esempio n. 2
0
 def drop_temp_tables(self, alias):
     data = {
         'prev_table': get_prev_agg_tablename(alias),
         'prev_local': f"{alias}_prev_local",
     }
     with connections[get_icds_ucr_citus_db_alias()].cursor() as cursor:
         cursor.execute(self.DROP_QUERY.format(**data))
Esempio n. 3
0
def allow_migrate(db, app_label):
    """
    Return ``True`` if a app's migrations should be applied to the specified database otherwise
    return ``False``.

    Note: returning ``None`` is tantamount to returning ``True``

    :return: Must return a boolean value, not None.
    """
    if app_label == ICDS_REPORTS_APP:
        db_aliases = [get_icds_ucr_db_alias(), get_icds_ucr_citus_db_alias()]
        return db in db_aliases
    elif app_label == AAA_APP:
        db_alias = get_aaa_db_alias()
        return bool(db_alias and db_alias == db)
    elif app_label == SYNCLOGS_APP:
        return db == settings.SYNCLOGS_SQL_DB_ALIAS
    elif app_label == WAREHOUSE_APP:
        return db == settings.WAREHOUSE_DATABASE_ALIAS

    if not settings.USE_PARTITIONED_DATABASE:
        return app_label != PROXY_APP and db in ('default', None)

    if app_label == PROXY_APP:
        return db == partition_config.get_proxy_db()
    elif app_label == BLOB_DB_APP and db == 'default':
        return True
    elif app_label in (FORM_PROCESSOR_APP, SCHEDULING_PARTITIONED_APP,
                       BLOB_DB_APP):
        return (db == partition_config.get_proxy_db()
                or db in partition_config.get_form_processing_dbs())
    elif app_label == SQL_ACCESSORS_APP:
        return db in partition_config.get_form_processing_dbs()
    else:
        return db == partition_config.get_main_db()
Esempio n. 4
0
 def _get_rows(self, query_master=False):
     if query_master:
         objects = DishaIndicatorView.objects.using(
             get_icds_ucr_citus_db_alias())
     else:
         objects = DishaIndicatorView.objects
     return objects.filter(month=self.month,
                           state_name__iexact=self.state_name).values_list(
                               *self._get_columns())
Esempio n. 5
0
 def create_temp_tables(self, table, day):
     data = {
         'prev_table': get_prev_agg_tablename(table),
         'prev_local': f"{table}_prev_local",
         'prev_month': day,
         'current_table': get_table_name(DASHBOARD_DOMAIN, table),
         'alias': table
     }
     with connections[get_icds_ucr_citus_db_alias()].cursor() as cursor:
         cursor.execute(self.CREATE_QUERY.format(**data))
Esempio n. 6
0
def _get_ucr_insertion_dates(domain, table_id, doc_ids):
    table_name = get_table_name(domain, table_id)
    with connections[get_icds_ucr_citus_db_alias()].cursor() as cursor:
        query = f'''
            SELECT
                doc_id,
                inserted_at
            FROM "{table_name}"
            WHERE doc_id = ANY(%(doc_ids)s);
        '''
        cursor.execute(query, {'doc_ids': doc_ids})
        return dict(cursor.fetchall())
Esempio n. 7
0
 def create_temp_tables(self, table, day):
     alias, table, ucr_alias, id_column_name = table
     data = {
         'prev_table': get_prev_agg_tablename(alias),
         'prev_local': f"{alias}_prev_local",
         'prev_month': day,
         'current_table': table,
         'alias': alias,
         'ucr_prev_local': f"{ucr_alias}_prev_local",
         'id_column': id_column_name
     }
     with connections[get_icds_ucr_citus_db_alias()].cursor() as cursor:
         cursor.execute(self.CREATE_QUERY.format(**data))
Esempio n. 8
0
 def create_temp_tables(self, table, day):
     next_month_start = day + relativedelta(months=1)
     six_months_ago = day - relativedelta(months=6)
     alias, table = table
     data = {
         'prev_table': get_prev_agg_tablename(alias),
         'prev_local': f"{alias}_prev_local",
         'prev_month': day,
         'current_table': table,
         'alias': alias,
         'six_months_ago': six_months_ago,
         'next_month_start': next_month_start
     }
     with connections[get_icds_ucr_citus_db_alias()].cursor() as cursor:
         cursor.execute(self.CREATE_QUERY.format(**data))
Esempio n. 9
0
def allow_migrate(db, app_label, model_name=None):
    """
    Return ``True`` if a app's migrations should be applied to the specified database otherwise
    return ``False``.

    Note: returning ``None`` is tantamount to returning ``True``

    :return: Must return a boolean value, not None.
    """
    if db and not settings.DATABASES[db].get('MIGRATE', True):
        return False

    if app_label == ICDS_REPORTS_APP:
        db_alias = get_icds_ucr_citus_db_alias()
        return bool(db_alias and db_alias == db)
    elif app_label == AAA_APP:
        db_alias = get_aaa_db_alias()
        return bool(db_alias and db_alias == db)
    elif app_label == SYNCLOGS_APP:
        return db == settings.SYNCLOGS_SQL_DB_ALIAS

    if not settings.USE_PARTITIONED_DATABASE:
        return app_label not in (PROXY_APP, PROXY_STANDBY_APP) and db in (
            DEFAULT_DB_ALIAS, None)

    if app_label == PROXY_APP:
        return (db == plproxy_config.proxy_db or bool(
            plproxy_standby_config and db == plproxy_standby_config.proxy_db))
    if app_label == PROXY_STANDBY_APP:
        return bool(plproxy_standby_config
                    and db == plproxy_standby_config.proxy_db)
    elif app_label == BLOB_DB_APP and db == DEFAULT_DB_ALIAS:
        return True
    elif app_label == BLOB_DB_APP and model_name == 'blobexpiration':
        return False
    elif app_label in (FORM_PROCESSOR_APP, SCHEDULING_PARTITIONED_APP,
                       BLOB_DB_APP):
        return (db == plproxy_config.proxy_db
                or db in plproxy_config.form_processing_dbs
                or bool(plproxy_standby_config
                        and db == plproxy_standby_config.proxy_db))
    elif app_label == SQL_ACCESSORS_APP:
        return db in plproxy_config.form_processing_dbs
    else:
        return db in (DEFAULT_DB_ALIAS, None)
Esempio n. 10
0
 def execute_query(self, query):
     db_alias = get_icds_ucr_citus_db_alias()
     with connections[db_alias].cursor() as cursor:
         cursor.execute(query)
         return cursor.fetchall()[0]