use crate::api::ApiError;
use crate::batch_messages::{ActivityBatchRequest, ActivityBatchResponse};
use crate::messages::{ActivityRequest, ActivityResponse};
use async_trait::async_trait;
#[async_trait]
pub trait DataSource: Send + Sync + 'static {
async fn create_participant_activity(
&self,
request: ActivityRequest,
) -> Result<Option<ActivityResponse>, ApiError>;
async fn create_participant_activity_batch(
&self,
request: ActivityBatchRequest,
) -> Result<Option<ActivityBatchResponse>, ApiError>;
async fn update_participant_activity(
&self,
request: ActivityRequest,
) -> Result<Option<ActivityResponse>, ApiError>;
async fn update_participant_activity_batch(
&self,
request: ActivityBatchRequest,
) -> Result<Option<ActivityBatchResponse>, ApiError>;
async fn delete_participant_activity(
&self,
request: ActivityRequest,
) -> Result<Option<ActivityResponse>, ApiError>;
async fn delete_participant_activity_batch(
&self,
request: ActivityBatchRequest,
) -> Result<Option<ActivityBatchResponse>, ApiError>;
async fn participant_activity_details(
&self,
request: ActivityRequest,
) -> Result<Option<ActivityResponse>, ApiError>;
async fn participant_activity_details_batch(
&self,
request: ActivityBatchRequest,
) -> Result<Option<ActivityBatchResponse>, ApiError>;
async fn participant_activity_progress(
&self,
request: ActivityRequest,
) -> Result<Option<ActivityResponse>, ApiError>;
async fn participant_activity_progress_batch(
&self,
request: ActivityBatchRequest,
) -> Result<Option<ActivityBatchResponse>, ApiError>;
async fn participant_activity_result(
&self,
request: ActivityRequest,
) -> Result<Option<ActivityResponse>, ApiError>;
async fn participant_activity_result_batch(
&self,
request: ActivityBatchRequest,
) -> Result<Option<ActivityBatchResponse>, ApiError>;
}