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