Source code for eurepoc.database_query
from eurepoc.data_cleaning_utils import get_clean_data
from eurepoc.data_query_utils import query_database
[docs]
class DatabaseQuery:
"""
A class used for querying and processing the data from the EuRepoC Strapi API using specified filters.
Parameters:
token (str): Authentication token for the EuRepoC database.
receiver_region (str, optional): Default is None.
receiver_country (str, optional): ISO-alpha-3 code. Default is None.
receiver_category (str, optional): Default is None.
initiator_country (str, optional): Default is None.
date_type (str, optional): Refers to the type of date to filter by. This can be either: 'start_date', referring to the start date of the incident; or 'createdAt', referring to the date the incident was added to the database. Default is None.
start_date (str, optional): The start date for filtering data (YYYY-MM-DD format). Default is None.
end_date (str, optional): The end date for filtering data (YYYY-MM-DD format). Default is None.
flag_type (str, optional): Default is None.
flag_status (str, optional): Default is None.
Raises:
ValueError: If no token is provided.
"""
def __init__(
self,
token: str,
receiver_region: str = None,
receiver_country: str = None,
receiver_category: str = None,
initiator_country: str = None,
date_type: str = None,
start_date: str = None,
end_date: str = None,
flag_type: str = None,
flag_status: str = None
):
if not token:
raise ValueError("A valid token must be provided.")
self.token = token
self.flag_type = flag_type
self.flag_status = flag_status
self.receiver_region = receiver_region
self.receiver_country = receiver_country
self.receiver_category = receiver_category
self.initiator_country = initiator_country
self.date_type = date_type
self.range_start_date = start_date
self.range_end_date = end_date
[docs]
def execute_query(self):
"""
Fetches and cleans data from the EuRepoC database.
Returns:
(list): A list of dictionaries, one per incident containing all cleaned and unnested variables from the database.
"""
try:
raw_data = self._query_database()
if raw_data is not None:
return get_clean_data(raw_data, receiver_region=self.receiver_region)
return None
except Exception as e:
print(f"Error processing data: {e}")
return None
def _query_database(self):
"""Performs a database query using the instance's configuration."""
return query_database(
token=self.token,
flag_type=self.flag_type, flag_status=self.flag_status,
receiver_region=self.receiver_region, receiver_country=self.receiver_country,
date_type=self.date_type, range_start_date=self.range_start_date, range_end_date=self.range_end_date,
receiver_category=self.receiver_category, initiator_country=self.initiator_country
)