Beispiel #1
0
def db_for_read_write(model, write=True):
    """
    :param model: Django model being queried
    :param write: Default to True since the DB for writes can also handle reads
    :return: Django DB alias to use for query
    """
    app_label = model._meta.app_label

    if app_label == SYNCLOGS_APP:
        return settings.SYNCLOGS_SQL_DB_ALIAS
    elif app_label == ICDS_REPORTS_APP:
        return connection_manager.get_django_db_alias(ICDS_UCR_CITUS_ENGINE_ID)
    elif app_label == AAA_APP:
        engine_id = AAA_DB_ENGINE_ID
        if not write:
            return connection_manager.get_load_balanced_read_db_alias(AAA_DB_ENGINE_ID)
        return connection_manager.get_django_db_alias(engine_id)

    if not settings.USE_PARTITIONED_DATABASE:
        return DEFAULT_DB_ALIAS

    if app_label == BLOB_DB_APP:
        if hasattr(model, 'partition_attr'):
            return partition_config.proxy_db
        return DEFAULT_DB_ALIAS
    if app_label == FORM_PROCESSOR_APP:
        return partition_config.proxy_db
    else:
        default_db = DEFAULT_DB_ALIAS
        if not write:
            return get_load_balanced_app_db(app_label, default_db)
        return default_db
Beispiel #2
0
def get_engine_id(an_object, allow_read_replicas=False):
    """
    Given an object, get the engine id for it.
    """
    # for now this only deals with data sources.
    from corehq.apps.userreports.models import AbstractUCRDataSource
    assert isinstance(an_object, AbstractUCRDataSource)
    if allow_read_replicas:
        return connection_manager.get_load_balanced_read_db_alias(an_object.engine_id)
    return an_object.engine_id
Beispiel #3
0
def get_engine_id(an_object, allow_read_replicas=False):
    """
    Given an object, get the engine id for it.
    """
    # for now this only deals with data sources.
    from corehq.apps.userreports.models import AbstractUCRDataSource
    assert isinstance(an_object, AbstractUCRDataSource)
    if allow_read_replicas:
        return connection_manager.get_load_balanced_read_db_alias(an_object.engine_id)
    return an_object.engine_id
Beispiel #4
0
def db_for_read_write(model, write=True):
    """
    :param model: Django model being queried
    :param write: Default to True since the DB for writes can also handle reads
    :return: Django DB alias to use for query
    """
    app_label = model._meta.app_label

    if app_label == WAREHOUSE_APP:
        return settings.WAREHOUSE_DATABASE_ALIAS
    elif app_label == SYNCLOGS_APP:
        return settings.SYNCLOGS_SQL_DB_ALIAS
    elif app_label == ICDS_REPORTS_APP:
        engine_id = ICDS_UCR_ENGINE_ID
        if not write:
            engine_id = connection_manager.get_load_balanced_read_db_alias(ICDS_UCR_ENGINE_ID)
        return connection_manager.get_django_db_alias(engine_id)
    elif app_label == AAA_APP:
        engine_id = AAA_DB_ENGINE_ID
        if not write:
            engine_id = connection_manager.get_load_balanced_read_db_alias(AAA_DB_ENGINE_ID)
        return connection_manager.get_django_db_alias(engine_id)

    if not settings.USE_PARTITIONED_DATABASE:
        return 'default'

    if app_label == BLOB_DB_APP:
        if hasattr(model, 'partition_attr'):
            return partition_config.get_proxy_db()
        return 'default'
    if app_label == FORM_PROCESSOR_APP:
        return partition_config.get_proxy_db()
    else:
        default_db = partition_config.get_main_db()
        if not write:
            return connection_manager.get_load_balanced_read_db_alias(app_label, default_db)
        return default_db