#[async_trait::async_trait]
pub trait Recommender: std::fmt::Debug + Send + Sync {
async fn list_insights(
&self,
req: crate::model::ListInsightsRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ListInsightsResponse>>;
async fn get_insight(
&self,
req: crate::model::GetInsightRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Insight>>;
async fn mark_insight_accepted(
&self,
req: crate::model::MarkInsightAcceptedRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Insight>>;
async fn list_recommendations(
&self,
req: crate::model::ListRecommendationsRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ListRecommendationsResponse>>;
async fn get_recommendation(
&self,
req: crate::model::GetRecommendationRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>>;
async fn mark_recommendation_dismissed(
&self,
req: crate::model::MarkRecommendationDismissedRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>>;
async fn mark_recommendation_claimed(
&self,
req: crate::model::MarkRecommendationClaimedRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>>;
async fn mark_recommendation_succeeded(
&self,
req: crate::model::MarkRecommendationSucceededRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>>;
async fn mark_recommendation_failed(
&self,
req: crate::model::MarkRecommendationFailedRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>>;
async fn get_recommender_config(
&self,
req: crate::model::GetRecommenderConfigRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::RecommenderConfig>>;
async fn update_recommender_config(
&self,
req: crate::model::UpdateRecommenderConfigRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::RecommenderConfig>>;
async fn get_insight_type_config(
&self,
req: crate::model::GetInsightTypeConfigRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::InsightTypeConfig>>;
async fn update_insight_type_config(
&self,
req: crate::model::UpdateInsightTypeConfigRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::InsightTypeConfig>>;
}
#[async_trait::async_trait]
impl<T: super::Recommender> Recommender for T {
async fn list_insights(
&self,
req: crate::model::ListInsightsRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ListInsightsResponse>> {
T::list_insights(self, req, options).await
}
async fn get_insight(
&self,
req: crate::model::GetInsightRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Insight>> {
T::get_insight(self, req, options).await
}
async fn mark_insight_accepted(
&self,
req: crate::model::MarkInsightAcceptedRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Insight>> {
T::mark_insight_accepted(self, req, options).await
}
async fn list_recommendations(
&self,
req: crate::model::ListRecommendationsRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ListRecommendationsResponse>> {
T::list_recommendations(self, req, options).await
}
async fn get_recommendation(
&self,
req: crate::model::GetRecommendationRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>> {
T::get_recommendation(self, req, options).await
}
async fn mark_recommendation_dismissed(
&self,
req: crate::model::MarkRecommendationDismissedRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>> {
T::mark_recommendation_dismissed(self, req, options).await
}
async fn mark_recommendation_claimed(
&self,
req: crate::model::MarkRecommendationClaimedRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>> {
T::mark_recommendation_claimed(self, req, options).await
}
async fn mark_recommendation_succeeded(
&self,
req: crate::model::MarkRecommendationSucceededRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>> {
T::mark_recommendation_succeeded(self, req, options).await
}
async fn mark_recommendation_failed(
&self,
req: crate::model::MarkRecommendationFailedRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Recommendation>> {
T::mark_recommendation_failed(self, req, options).await
}
async fn get_recommender_config(
&self,
req: crate::model::GetRecommenderConfigRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::RecommenderConfig>> {
T::get_recommender_config(self, req, options).await
}
async fn update_recommender_config(
&self,
req: crate::model::UpdateRecommenderConfigRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::RecommenderConfig>> {
T::update_recommender_config(self, req, options).await
}
async fn get_insight_type_config(
&self,
req: crate::model::GetInsightTypeConfigRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::InsightTypeConfig>> {
T::get_insight_type_config(self, req, options).await
}
async fn update_insight_type_config(
&self,
req: crate::model::UpdateInsightTypeConfigRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::InsightTypeConfig>> {
T::update_insight_type_config(self, req, options).await
}
}