use std::sync::Arc;
use uuid::Uuid;
use crate::{
AgendaItem, Body, Inventory, Meeting, Membership, NewBody, NewMeeting, NewUser, Organization,
Person, Result, System, UpdateUser, User,
};
#[async_trait::async_trait]
impl<I: Inventory + Sync> Inventory for Arc<tokio::sync::RwLock<I>> {
async fn create_user(&mut self, user: NewUser) -> Result<User> {
self.write().await.create_user(user).await
}
async fn get_user_by_sub(&mut self, sub: String) -> Result<User> {
self.write().await.get_user_by_sub(sub).await
}
async fn update_user(&mut self, update: UpdateUser) -> Result<User> {
self.write().await.update_user(update).await
}
async fn has_user_body_permission(&mut self, user_id: Uuid, body_id: &str) -> Result<bool> {
println!("mark a 1");
self.write()
.await
.has_user_body_permission(user_id, body_id)
.await
}
async fn get_system(&mut self) -> Result<System> {
self.write().await.get_system().await
}
async fn create_body(&mut self, body: NewBody) -> Result<Body> {
self.write().await.create_body(body).await
}
async fn get_bodies(&mut self) -> Result<Vec<Body>> {
self.write().await.get_bodies().await
}
async fn get_bodies_for_user(&mut self, user_id: Uuid) -> Result<Vec<Body>> {
self.write().await.get_bodies_for_user(user_id).await
}
async fn get_body(&mut self, body_id: &str) -> Result<Body> {
self.write().await.get_body(body_id).await
}
async fn get_persons(&mut self, body_id: &str) -> Result<Vec<Person>> {
self.write().await.get_persons(body_id).await
}
async fn get_person(&mut self, body_id: &str, person_id: &str) -> Result<Person> {
self.write().await.get_person(body_id, person_id).await
}
async fn get_person_memberships(&mut self, person_id: &str) -> Result<Vec<Membership>> {
self.write().await.get_person_memberships(person_id).await
}
async fn get_organizations(&mut self, body_id: &str) -> Result<Vec<Organization>> {
self.write().await.get_organizations(body_id).await
}
async fn get_organization(
&mut self,
body_id: &str,
organization_id: &str,
) -> Result<Organization> {
self.write()
.await
.get_organization(body_id, organization_id)
.await
}
async fn get_organization_meetings(
&mut self,
body_id: &str,
organization_id: &str,
) -> Result<Vec<Meeting>> {
self.write()
.await
.get_organization_meetings(body_id, organization_id)
.await
}
async fn get_organization_memberships(
&mut self,
organization_id: &str,
) -> Result<Vec<Membership>> {
self.write()
.await
.get_organization_memberships(organization_id)
.await
}
async fn get_agenda_items(&mut self, body_id: &str) -> Result<Vec<AgendaItem>> {
self.write().await.get_agenda_items(body_id).await
}
async fn get_agenda_item(&mut self, body_id: &str, agenda_item_id: &str) -> Result<AgendaItem> {
self.write()
.await
.get_agenda_item(body_id, agenda_item_id)
.await
}
async fn get_meetings(&mut self, body_id: &str) -> Result<Vec<Meeting>> {
self.write().await.get_meetings(body_id).await
}
async fn get_meeting(&mut self, body_id: &str, meeting_id: &str) -> Result<Meeting> {
self.write().await.get_meeting(body_id, meeting_id).await
}
async fn create_meeting(&mut self, meeting: NewMeeting) -> Result<Meeting> {
self.write().await.create_meeting(meeting).await
}
async fn get_memberships(&mut self, body_id: &str) -> Result<Vec<Membership>> {
self.write().await.get_memberships(body_id).await
}
async fn get_membership(&mut self, body_id: &str, membership_id: &str) -> Result<Membership> {
self.write()
.await
.get_membership(body_id, membership_id)
.await
}
}