use pib_service_api_types::{
Index, Pagination,
body::{
Body, NewBody,
by_id::{
meeting::{
Meeting, NewMeeting,
by_id::agenda_item::{AgendaItem, NewAgendaItem, UpdateAgendaItem},
},
membership::{self, Membership, NewMembership, UpdateMembership},
organization::{self, NewOrganization, Organization},
permission::{NewPermission, Permission},
person::{self, NewPerson, Person},
},
},
config::Config,
me::profile::{Profile, UpdateProfile},
user::User,
};
use pib_service_core_types::{
AgendaItemId, BodyId, BodyPermissionId, DataPage, MeetingId, MembershipId, OrganizationId,
PersonId, UserId,
};
mod requests {
pub(super) use pib_client_requests::{
body::{
self,
by_id::{
meeting::{self, by_id::agenda_item},
membership, organization, permission, person,
},
},
config, get, me, user,
};
}
mod types {
pub(super) use pib_service_api_types::{
body::{
self,
by_id::{
meeting::{self, by_id::agenda_item},
organization, permission, person,
},
},
me, user,
};
}
#[async_trait::async_trait(?Send)]
pub trait PibClient: Clone {
type ClientError: std::error::Error;
async fn get(&self) -> Result<Index, Self::ClientError>;
async fn config_get(&self) -> Result<Config, Self::ClientError>;
async fn user_get(&self, pagination: Pagination) -> Result<DataPage<User>, Self::ClientError>;
async fn user_by_id_get(&self, user_id: UserId) -> Result<User, Self::ClientError>;
async fn body_get(&self, pagination: Pagination) -> Result<DataPage<Body>, Self::ClientError>;
async fn body_post(&self, new_body: NewBody) -> Result<Body, Self::ClientError>;
async fn body_by_id_get(&self, body_id: BodyId) -> Result<Body, Self::ClientError>;
async fn body_by_id_permission_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<Permission>, Self::ClientError>;
async fn body_by_id_permission_post(
&self,
body_id: BodyId,
new_permission: NewPermission,
) -> Result<Permission, Self::ClientError>;
async fn body_by_id_permission_by_id_get(
&self,
body_id: BodyId,
permission_id: BodyPermissionId,
) -> Result<Permission, Self::ClientError>;
async fn body_by_id_meeting_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<Meeting>, Self::ClientError>;
async fn body_by_id_meeting_post(
&self,
body_id: BodyId,
new_meeting: NewMeeting,
) -> Result<Meeting, Self::ClientError>;
async fn body_by_id_meeting_by_id_get(
&self,
body_id: BodyId,
meeting_id: MeetingId,
) -> Result<Meeting, Self::ClientError>;
async fn body_by_id_meeting_by_id_agenda_item_get(
&self,
body_id: BodyId,
meeting_id: MeetingId,
pagination: Pagination,
) -> Result<DataPage<AgendaItem>, Self::ClientError>;
async fn body_by_id_meeting_by_id_agenda_item_post(
&self,
body_id: BodyId,
meeting_id: MeetingId,
new_agenda_item: NewAgendaItem,
) -> Result<AgendaItem, Self::ClientError>;
async fn body_by_id_meeting_by_id_agenda_item_by_id_get(
&self,
body_id: BodyId,
meeting_id: MeetingId,
agenda_item_id: AgendaItemId,
) -> Result<AgendaItem, Self::ClientError>;
async fn body_by_id_meeting_by_id_agenda_item_by_id_patch(
&self,
body_id: BodyId,
meeting_id: MeetingId,
agenda_item_id: AgendaItemId,
update_agenda_item: UpdateAgendaItem,
) -> Result<types::agenda_item::AgendaItem, Self::ClientError>;
async fn body_by_id_organization_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<Organization>, Self::ClientError>;
async fn body_by_id_organization_post(
&self,
body_id: BodyId,
payload: NewOrganization,
) -> Result<Organization, Self::ClientError>;
async fn body_by_id_organization_by_id_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
) -> Result<Organization, Self::ClientError>;
async fn body_by_id_organization_by_id_membership_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
pagination: Pagination,
) -> Result<DataPage<Membership>, Self::ClientError>;
async fn body_by_id_organization_by_id_membership_post(
&self,
body_id: BodyId,
organization_id: OrganizationId,
new_membership: organization::by_id::membership::NewMembership,
) -> Result<Membership, Self::ClientError>;
async fn body_by_id_organization_by_id_membership_by_id_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
membership_id: MembershipId,
) -> Result<Membership, Self::ClientError>;
async fn body_by_id_organization_by_id_membership_by_id_patch(
&self,
body_id: BodyId,
organization_id: OrganizationId,
membership_id: MembershipId,
update_membership: UpdateMembership,
) -> Result<Membership, Self::ClientError>;
async fn body_by_id_person_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<Person>, Self::ClientError>;
async fn body_by_id_person_post(
&self,
body_id: BodyId,
new_person: NewPerson,
) -> Result<Person, Self::ClientError>;
async fn body_by_id_person_by_id_get(
&self,
body_id: BodyId,
person_id: PersonId,
) -> Result<Person, Self::ClientError>;
async fn body_by_id_person_by_id_membership_get(
&self,
body_id: BodyId,
person_id: PersonId,
pagination: Pagination,
) -> Result<DataPage<Membership>, Self::ClientError>;
async fn body_by_id_person_by_id_membership_post(
&self,
body_id: BodyId,
person_id: PersonId,
new_membership: person::by_id::membership::NewMembership,
) -> Result<Membership, Self::ClientError>;
async fn body_by_id_person_by_id_membership_by_id_get(
&self,
body_id: BodyId,
person_id: PersonId,
membership_id: MembershipId,
) -> Result<Membership, Self::ClientError>;
async fn body_by_id_person_by_id_membership_by_id_patch(
&self,
body_id: BodyId,
person_id: PersonId,
membership_id: MembershipId,
update_membership: UpdateMembership,
) -> Result<Membership, Self::ClientError>;
async fn body_by_id_membership_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<Membership>, Self::ClientError>;
async fn body_by_id_membership_post(
&self,
body_id: BodyId,
new_membership: NewMembership,
) -> Result<Membership, Self::ClientError>;
async fn body_by_id_membership_by_id_get(
&self,
body_id: BodyId,
membership_id: MembershipId,
) -> Result<Membership, Self::ClientError>;
async fn body_by_id_membership_by_id_patch(
&self,
body_id: BodyId,
membership_id: MembershipId,
update_membership: UpdateMembership,
) -> Result<Membership, Self::ClientError>;
async fn me_profile_get(&self) -> Result<Profile, Self::ClientError>;
async fn me_profile_patch(
&self,
update_profile: UpdateProfile,
) -> Result<Profile, Self::ClientError>;
}
#[async_trait::async_trait(?Send)]
impl<C: http_request_derive_client::Client + Clone> PibClient for C {
type ClientError = C::ClientError;
async fn get(&self) -> Result<Index, Self::ClientError> {
let response = self.execute(requests::get::Request).await?;
Ok(response.0.0)
}
async fn config_get(&self) -> Result<Config, Self::ClientError> {
let response = self.execute(requests::config::get::Request).await?;
Ok(response.0.0)
}
async fn user_get(
&self,
pagination: Pagination,
) -> Result<DataPage<types::user::User>, Self::ClientError> {
let response = self
.execute(requests::user::get::Request { pagination })
.await?;
Ok(response.0.0)
}
async fn user_by_id_get(
&self,
user_id: UserId,
) -> Result<types::user::User, Self::ClientError> {
let response = self
.execute(requests::user::by_id::get::Request { user_id })
.await?;
Ok(response.0.0)
}
async fn body_get(
&self,
pagination: Pagination,
) -> Result<DataPage<types::body::Body>, Self::ClientError> {
let response = self
.execute(requests::body::get::Request { pagination })
.await?;
Ok(response.0.0)
}
async fn body_post(
&self,
new_body: types::body::NewBody,
) -> Result<types::body::Body, Self::ClientError> {
Ok(self
.execute(requests::body::post::Request {
payload: types::body::post::RequestBody(new_body),
})
.await?
.0
.0)
}
async fn body_by_id_get(
&self,
body_id: BodyId,
) -> Result<types::body::Body, Self::ClientError> {
let response = self
.execute(requests::body::by_id::get::Request { body_id })
.await?;
Ok(response.0.0)
}
async fn body_by_id_permission_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<Permission>, Self::ClientError> {
Ok(self
.execute(requests::permission::get::Request {
body_id,
pagination,
})
.await?
.0
.0)
}
async fn body_by_id_permission_post(
&self,
body_id: BodyId,
new_permission: NewPermission,
) -> Result<Permission, Self::ClientError> {
Ok(self
.execute(requests::permission::post::Request {
body_id,
payload: types::permission::post::RequestBody(new_permission),
})
.await?
.0
.0)
}
async fn body_by_id_permission_by_id_get(
&self,
body_id: BodyId,
permission_id: BodyPermissionId,
) -> Result<types::permission::Permission, Self::ClientError> {
let response = self
.execute(requests::permission::by_id::get::Request {
body_id,
permission_id,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_meeting_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<types::meeting::Meeting>, Self::ClientError> {
Ok(self
.execute(requests::meeting::get::Request {
body_id,
pagination,
})
.await?
.0
.0)
}
async fn body_by_id_meeting_post(
&self,
body_id: BodyId,
new_meeting: types::meeting::NewMeeting,
) -> Result<types::meeting::Meeting, Self::ClientError> {
Ok(self
.execute(requests::meeting::post::Request {
body_id,
payload: types::meeting::post::RequestBody(new_meeting),
})
.await?
.0
.0)
}
async fn body_by_id_meeting_by_id_get(
&self,
body_id: BodyId,
meeting_id: MeetingId,
) -> Result<types::meeting::Meeting, Self::ClientError> {
let response = self
.execute(requests::meeting::by_id::get::Request {
body_id,
meeting_id,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_meeting_by_id_agenda_item_get(
&self,
body_id: BodyId,
meeting_id: MeetingId,
pagination: Pagination,
) -> Result<DataPage<types::agenda_item::AgendaItem>, Self::ClientError> {
let response = self
.execute(requests::agenda_item::get::Request {
body_id,
meeting_id,
pagination,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_meeting_by_id_agenda_item_post(
&self,
body_id: BodyId,
meeting_id: MeetingId,
new_agenda_item: types::agenda_item::NewAgendaItem,
) -> Result<types::agenda_item::AgendaItem, Self::ClientError> {
Ok(self
.execute(requests::agenda_item::post::Request {
body_id,
meeting_id,
payload: types::agenda_item::post::RequestBody(new_agenda_item),
})
.await?
.0
.0)
}
async fn body_by_id_meeting_by_id_agenda_item_by_id_get(
&self,
body_id: BodyId,
meeting_id: MeetingId,
agenda_item_id: AgendaItemId,
) -> Result<types::agenda_item::AgendaItem, Self::ClientError> {
let response = self
.execute(requests::agenda_item::by_id::get::Request {
body_id,
meeting_id,
agenda_item_id,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_meeting_by_id_agenda_item_by_id_patch(
&self,
body_id: BodyId,
meeting_id: MeetingId,
agenda_item_id: AgendaItemId,
update_agenda_item: UpdateAgendaItem,
) -> Result<types::agenda_item::AgendaItem, Self::ClientError> {
let response = self
.execute(requests::agenda_item::by_id::patch::Request {
body_id,
meeting_id,
agenda_item_id,
payload: types::agenda_item::by_id::patch::RequestBody(update_agenda_item),
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_organization_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<types::organization::Organization>, Self::ClientError> {
Ok(self
.execute(requests::organization::get::Request {
body_id,
pagination,
})
.await?
.0
.0)
}
async fn body_by_id_organization_post(
&self,
body_id: BodyId,
new_organization: types::organization::NewOrganization,
) -> Result<types::organization::Organization, Self::ClientError> {
Ok(self
.execute(requests::organization::post::Request {
body_id,
payload: types::organization::post::RequestBody(new_organization),
})
.await?
.0
.0)
}
async fn body_by_id_organization_by_id_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
) -> Result<types::organization::Organization, Self::ClientError> {
let response = self
.execute(requests::organization::by_id::get::Request {
body_id,
organization_id,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_organization_by_id_membership_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
pagination: Pagination,
) -> Result<DataPage<Membership>, Self::ClientError> {
let response = self
.execute(requests::organization::by_id::membership::get::Request {
body_id,
organization_id,
pagination,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_organization_by_id_membership_post(
&self,
body_id: BodyId,
organization_id: OrganizationId,
new_membership: organization::by_id::membership::NewMembership,
) -> Result<Membership, Self::ClientError> {
Ok(self
.execute(requests::organization::by_id::membership::post::Request {
body_id,
organization_id,
payload: types::organization::by_id::membership::post::RequestBody(new_membership),
})
.await?
.0
.0)
}
async fn body_by_id_organization_by_id_membership_by_id_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
membership_id: MembershipId,
) -> Result<Membership, Self::ClientError> {
let response = self
.execute(
requests::organization::by_id::membership::by_id::get::Request {
body_id,
organization_id,
membership_id,
},
)
.await?;
Ok(response.0.0)
}
async fn body_by_id_organization_by_id_membership_by_id_patch(
&self,
body_id: BodyId,
organization_id: OrganizationId,
membership_id: MembershipId,
update_membership: UpdateMembership,
) -> Result<Membership, Self::ClientError> {
let response = self
.execute(
requests::organization::by_id::membership::by_id::patch::Request {
body_id,
organization_id,
membership_id,
payload: organization::by_id::membership::by_id::patch::RequestBody(
update_membership,
),
},
)
.await?;
Ok(response.0.0)
}
async fn body_by_id_person_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<types::person::Person>, Self::ClientError> {
Ok(self
.execute(requests::person::get::Request {
body_id,
pagination,
})
.await?
.0
.0)
}
async fn body_by_id_person_post(
&self,
body_id: BodyId,
new_person: types::person::NewPerson,
) -> Result<types::person::Person, Self::ClientError> {
Ok(self
.execute(requests::person::post::Request {
body_id,
payload: types::person::post::RequestBody(new_person),
})
.await?
.0
.0)
}
async fn body_by_id_person_by_id_get(
&self,
body_id: BodyId,
person_id: PersonId,
) -> Result<types::person::Person, Self::ClientError> {
let response = self
.execute(requests::person::by_id::get::Request { body_id, person_id })
.await?;
Ok(response.0.0)
}
async fn body_by_id_person_by_id_membership_get(
&self,
body_id: BodyId,
person_id: PersonId,
pagination: Pagination,
) -> Result<DataPage<Membership>, Self::ClientError> {
let response = self
.execute(requests::person::by_id::membership::get::Request {
body_id,
person_id,
pagination,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_person_by_id_membership_post(
&self,
body_id: BodyId,
person_id: PersonId,
new_membership: person::by_id::membership::NewMembership,
) -> Result<Membership, Self::ClientError> {
Ok(self
.execute(requests::person::by_id::membership::post::Request {
body_id,
person_id,
payload: types::person::by_id::membership::post::RequestBody(new_membership),
})
.await?
.0
.0)
}
async fn body_by_id_person_by_id_membership_by_id_get(
&self,
body_id: BodyId,
person_id: PersonId,
membership_id: MembershipId,
) -> Result<Membership, Self::ClientError> {
let response = self
.execute(requests::person::by_id::membership::by_id::get::Request {
body_id,
person_id,
membership_id,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_person_by_id_membership_by_id_patch(
&self,
body_id: BodyId,
person_id: PersonId,
membership_id: MembershipId,
update_membership: UpdateMembership,
) -> Result<Membership, Self::ClientError> {
let response = self
.execute(requests::person::by_id::membership::by_id::patch::Request {
body_id,
person_id,
membership_id,
payload: person::by_id::membership::by_id::patch::RequestBody(update_membership),
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_membership_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<Membership>, Self::ClientError> {
let response = self
.execute(requests::membership::get::Request {
body_id,
pagination,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_membership_post(
&self,
body_id: BodyId,
new_membership: membership::NewMembership,
) -> Result<Membership, Self::ClientError> {
Ok(self
.execute(requests::membership::post::Request {
body_id,
payload: membership::post::RequestBody(new_membership),
})
.await?
.0
.0)
}
async fn body_by_id_membership_by_id_get(
&self,
body_id: BodyId,
membership_id: MembershipId,
) -> Result<Membership, Self::ClientError> {
let response = self
.execute(requests::membership::by_id::get::Request {
body_id,
membership_id,
})
.await?;
Ok(response.0.0)
}
async fn body_by_id_membership_by_id_patch(
&self,
body_id: BodyId,
membership_id: MembershipId,
update_membership: UpdateMembership,
) -> Result<Membership, Self::ClientError> {
let response = self
.execute(requests::membership::by_id::patch::Request {
body_id,
membership_id,
payload: membership::by_id::patch::RequestBody(update_membership),
})
.await?;
Ok(response.0.0)
}
async fn me_profile_get(&self) -> Result<types::me::profile::Profile, Self::ClientError> {
Ok(self.execute(requests::me::profile::get::Request).await?.0.0)
}
async fn me_profile_patch(
&self,
update_profile: UpdateProfile,
) -> Result<Profile, Self::ClientError> {
Ok(self
.execute(requests::me::profile::patch::Request {
payload: types::me::profile::patch::RequestBody(update_profile),
})
.await?
.0
.0)
}
}