use pib_service_api_types::{
Index, Pagination,
body::{
Body, UpdateBody,
by_id::{
meeting::{
Meeting, MeetingParentId, UpdateMeeting,
by_id::agenda_item::{AgendaItem, AgendaItemParentId, UpdateAgendaItem},
},
membership::{
self, Membership, MembershipParentId, OrganizationMembershipParentId,
PersonMembershipParentId, UpdateMembership,
},
organization::{self, Organization, OrganizationParentId, UpdateOrganization},
permission::{NewPermission, Permission, PermissionParentId},
person::{self, Person, PersonParentId, UpdatePerson},
},
},
config::Config,
me::profile::{Profile, UpdateProfile},
user::User,
};
use pib_service_core_types::{
AgendaItemId, BodyId, BodyPermissionId, DataItem, 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,
};
}
#[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<(), UserId, User>, Self::ClientError>;
async fn user_by_id_get(
&self,
user_id: UserId,
) -> Result<DataItem<(), UserId, User>, Self::ClientError>;
async fn body_get(
&self,
pagination: Pagination,
) -> Result<DataPage<(), BodyId, Body>, Self::ClientError>;
async fn body_post(&self, body: Body) -> Result<DataItem<(), BodyId, Body>, Self::ClientError>;
async fn body_by_id_get(
&self,
body_id: BodyId,
) -> Result<DataItem<(), BodyId, Body>, Self::ClientError>;
async fn body_by_id_patch(
&self,
body_id: BodyId,
update_body: UpdateBody,
) -> Result<DataItem<(), BodyId, Body>, Self::ClientError>;
async fn body_by_id_permission_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<PermissionParentId, BodyPermissionId, Permission>, Self::ClientError>;
async fn body_by_id_permission_post(
&self,
body_id: BodyId,
permission: NewPermission,
) -> Result<DataItem<PermissionParentId, BodyPermissionId, Permission>, Self::ClientError>;
async fn body_by_id_permission_by_id_get(
&self,
body_id: BodyId,
permission_id: BodyPermissionId,
) -> Result<DataItem<PermissionParentId, BodyPermissionId, Permission>, Self::ClientError>;
async fn body_by_id_meeting_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<MeetingParentId, MeetingId, Meeting>, Self::ClientError>;
async fn body_by_id_meeting_post(
&self,
body_id: BodyId,
meeting: Meeting,
) -> Result<DataItem<MeetingParentId, MeetingId, Meeting>, Self::ClientError>;
async fn body_by_id_meeting_by_id_get(
&self,
body_id: BodyId,
meeting_id: MeetingId,
) -> Result<DataItem<MeetingParentId, MeetingId, Meeting>, Self::ClientError>;
async fn body_by_id_meeting_by_id_patch(
&self,
body_id: BodyId,
meeting_id: MeetingId,
update_meeting: UpdateMeeting,
) -> Result<DataItem<MeetingParentId, MeetingId, 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<AgendaItemParentId, AgendaItemId, AgendaItem>, Self::ClientError>;
async fn body_by_id_meeting_by_id_agenda_item_post(
&self,
body_id: BodyId,
meeting_id: MeetingId,
agenda_item: AgendaItem,
) -> Result<DataItem<AgendaItemParentId, AgendaItemId, 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<DataItem<AgendaItemParentId, AgendaItemId, 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<DataItem<AgendaItemParentId, AgendaItemId, AgendaItem>, Self::ClientError>;
async fn body_by_id_organization_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<OrganizationParentId, OrganizationId, Organization>, Self::ClientError>;
async fn body_by_id_organization_post(
&self,
body_id: BodyId,
organization: Organization,
) -> Result<DataItem<OrganizationParentId, OrganizationId, Organization>, Self::ClientError>;
async fn body_by_id_organization_by_id_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
) -> Result<DataItem<OrganizationParentId, OrganizationId, Organization>, Self::ClientError>;
async fn body_by_id_organization_by_id_patch(
&self,
body_id: BodyId,
organization_id: OrganizationId,
update_organization: UpdateOrganization,
) -> Result<DataItem<OrganizationParentId, OrganizationId, Organization>, Self::ClientError>;
async fn body_by_id_organization_by_id_membership_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
pagination: Pagination,
) -> Result<DataPage<OrganizationMembershipParentId, MembershipId, Membership>, Self::ClientError>;
async fn body_by_id_organization_by_id_membership_post(
&self,
body_id: BodyId,
organization_id: OrganizationId,
membership: organization::by_id::membership::NewMembership,
) -> Result<DataItem<OrganizationMembershipParentId, MembershipId, 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<DataItem<OrganizationMembershipParentId, MembershipId, 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<DataItem<OrganizationMembershipParentId, MembershipId, Membership>, Self::ClientError>;
async fn body_by_id_person_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<PersonParentId, PersonId, Person>, Self::ClientError>;
async fn body_by_id_person_post(
&self,
body_id: BodyId,
person: Person,
) -> Result<DataItem<PersonParentId, PersonId, Person>, Self::ClientError>;
async fn body_by_id_person_by_id_get(
&self,
body_id: BodyId,
person_id: PersonId,
) -> Result<DataItem<PersonParentId, PersonId, Person>, Self::ClientError>;
async fn body_by_id_person_by_id_patch(
&self,
body_id: BodyId,
person_id: PersonId,
update_person: UpdatePerson,
) -> Result<DataItem<PersonParentId, PersonId, Person>, Self::ClientError>;
async fn body_by_id_person_by_id_membership_get(
&self,
body_id: BodyId,
person_id: PersonId,
pagination: Pagination,
) -> Result<DataPage<PersonMembershipParentId, MembershipId, Membership>, Self::ClientError>;
async fn body_by_id_person_by_id_membership_post(
&self,
body_id: BodyId,
person_id: PersonId,
membership: person::by_id::membership::NewMembership,
) -> Result<DataItem<PersonMembershipParentId, MembershipId, 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<DataItem<PersonMembershipParentId, MembershipId, 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<DataItem<PersonMembershipParentId, MembershipId, Membership>, Self::ClientError>;
async fn body_by_id_membership_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<MembershipParentId, MembershipId, Membership>, Self::ClientError>;
async fn body_by_id_membership_post(
&self,
body_id: BodyId,
membership: Membership,
) -> Result<DataItem<MembershipParentId, MembershipId, Membership>, Self::ClientError>;
async fn body_by_id_membership_by_id_get(
&self,
body_id: BodyId,
membership_id: MembershipId,
) -> Result<DataItem<MembershipParentId, MembershipId, Membership>, Self::ClientError>;
async fn body_by_id_membership_by_id_patch(
&self,
body_id: BodyId,
membership_id: MembershipId,
update_membership: UpdateMembership,
) -> Result<DataItem<MembershipParentId, MembershipId, 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<(), UserId, 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<DataItem<(), UserId, 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<(), BodyId, Body>, Self::ClientError> {
let response = self
.execute(requests::body::get::Request { pagination })
.await?;
Ok(response.0.0)
}
async fn body_post(&self, body: Body) -> Result<DataItem<(), BodyId, Body>, Self::ClientError> {
Ok(self
.execute(requests::body::post::Request {
payload: types::body::post::RequestBody(body),
})
.await?
.0
.0)
}
async fn body_by_id_get(
&self,
body_id: BodyId,
) -> Result<DataItem<(), BodyId, 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_patch(
&self,
body_id: BodyId,
update_body: UpdateBody,
) -> Result<DataItem<(), BodyId, Body>, Self::ClientError> {
Ok(self
.execute(requests::body::by_id::patch::Request {
body_id,
payload: types::body::by_id::patch::RequestBody(update_body),
})
.await?
.0
.0)
}
async fn body_by_id_permission_get(
&self,
body_id: BodyId,
pagination: Pagination,
) -> Result<DataPage<PermissionParentId, BodyPermissionId, 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,
permission: NewPermission,
) -> Result<DataItem<PermissionParentId, BodyPermissionId, Permission>, Self::ClientError> {
Ok(self
.execute(requests::permission::post::Request {
body_id,
payload: types::permission::post::RequestBody(permission),
})
.await?
.0
.0)
}
async fn body_by_id_permission_by_id_get(
&self,
body_id: BodyId,
permission_id: BodyPermissionId,
) -> Result<DataItem<PermissionParentId, BodyPermissionId, 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<MeetingParentId, MeetingId, 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,
meeting: Meeting,
) -> Result<DataItem<MeetingParentId, MeetingId, Meeting>, Self::ClientError> {
Ok(self
.execute(requests::meeting::post::Request {
body_id,
payload: types::meeting::post::RequestBody(meeting),
})
.await?
.0
.0)
}
async fn body_by_id_meeting_by_id_get(
&self,
body_id: BodyId,
meeting_id: MeetingId,
) -> Result<DataItem<MeetingParentId, MeetingId, 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_patch(
&self,
body_id: BodyId,
meeting_id: MeetingId,
update_meeting: UpdateMeeting,
) -> Result<DataItem<MeetingParentId, MeetingId, Meeting>, Self::ClientError> {
let response = self
.execute(requests::meeting::by_id::patch::Request {
body_id,
meeting_id,
payload: types::meeting::by_id::patch::RequestBody(update_meeting),
})
.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<AgendaItemParentId, AgendaItemId, 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,
agenda_item: AgendaItem,
) -> Result<DataItem<AgendaItemParentId, AgendaItemId, AgendaItem>, Self::ClientError> {
Ok(self
.execute(requests::agenda_item::post::Request {
body_id,
meeting_id,
payload: types::agenda_item::post::RequestBody(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<DataItem<AgendaItemParentId, AgendaItemId, 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<DataItem<AgendaItemParentId, AgendaItemId, 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<OrganizationParentId, OrganizationId, 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,
organization: Organization,
) -> Result<DataItem<OrganizationParentId, OrganizationId, Organization>, Self::ClientError>
{
Ok(self
.execute(requests::organization::post::Request {
body_id,
payload: types::organization::post::RequestBody(organization),
})
.await?
.0
.0)
}
async fn body_by_id_organization_by_id_get(
&self,
body_id: BodyId,
organization_id: OrganizationId,
) -> Result<DataItem<OrganizationParentId, OrganizationId, 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_patch(
&self,
body_id: BodyId,
organization_id: OrganizationId,
update_organization: UpdateOrganization,
) -> Result<DataItem<OrganizationParentId, OrganizationId, Organization>, Self::ClientError>
{
let response = self
.execute(requests::organization::by_id::patch::Request {
body_id,
organization_id,
payload: organization::by_id::patch::RequestBody(update_organization),
})
.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<OrganizationMembershipParentId, MembershipId, 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<DataItem<OrganizationMembershipParentId, MembershipId, 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<DataItem<OrganizationMembershipParentId, MembershipId, 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<DataItem<OrganizationMembershipParentId, MembershipId, 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<PersonParentId, PersonId, 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,
person: Person,
) -> Result<DataItem<PersonParentId, PersonId, Person>, Self::ClientError> {
Ok(self
.execute(requests::person::post::Request {
body_id,
payload: types::person::post::RequestBody(person),
})
.await?
.0
.0)
}
async fn body_by_id_person_by_id_get(
&self,
body_id: BodyId,
person_id: PersonId,
) -> Result<DataItem<PersonParentId, PersonId, 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_patch(
&self,
body_id: BodyId,
person_id: PersonId,
update_person: UpdatePerson,
) -> Result<DataItem<PersonParentId, PersonId, Person>, Self::ClientError> {
let response = self
.execute(requests::person::by_id::patch::Request {
body_id,
person_id,
payload: person::by_id::patch::RequestBody(update_person),
})
.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<PersonMembershipParentId, MembershipId, 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<DataItem<PersonMembershipParentId, MembershipId, 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<DataItem<PersonMembershipParentId, MembershipId, 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<DataItem<PersonMembershipParentId, MembershipId, 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<MembershipParentId, MembershipId, 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,
membership: Membership,
) -> Result<DataItem<MembershipParentId, MembershipId, Membership>, Self::ClientError> {
Ok(self
.execute(requests::membership::post::Request {
body_id,
payload: membership::post::RequestBody(membership),
})
.await?
.0
.0)
}
async fn body_by_id_membership_by_id_get(
&self,
body_id: BodyId,
membership_id: MembershipId,
) -> Result<DataItem<MembershipParentId, MembershipId, 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<DataItem<MembershipParentId, MembershipId, 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)
}
}