/* * Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers * All rights reserved. * Licensed under the Apache License, Version 2.0 * * or the MIT license , * at your option. All files in the project carrying such * notice may not be copied, modified, or distributed except * according to those terms. */ //! Trait for ServerBroker use crate::types::*; use ng_repo::errors::*; use ng_repo::types::*; pub trait IServerBroker: Send + Sync { fn get_user(&self, user_id: PubKey) -> Result; fn add_user(&self, user_id: PubKey, is_admin: bool) -> Result<(), ProtocolError>; fn del_user(&self, user_id: PubKey) -> Result<(), ProtocolError>; fn list_users(&self, admins: bool) -> Result, ProtocolError>; fn list_invitations( &self, admin: bool, unique: bool, multi: bool, ) -> Result)>, ProtocolError>; fn add_invitation( &self, invite_code: &InvitationCode, expiry: u32, memo: &Option, ) -> Result<(), ProtocolError>; fn get_invitation_type(&self, invite: [u8; 32]) -> Result; fn remove_invitation(&self, invite: [u8; 32]) -> Result<(), ProtocolError>; fn next_seq_for_peer(&self, peer: &PeerId, seq: u64) -> Result<(), ServerError>; fn get_repo_pin_status( &self, overlay: &OverlayId, repo: &RepoHash, ) -> Result; fn pin_repo( &self, overlay: &OverlayId, repo: &RepoHash, ro_topics: &Vec, rw_topics: &Vec, ) -> Result; fn topic_sub( &self, overlay: &OverlayId, repo: &RepoHash, topic: &TopicId, publisher: Option<&PublisherAdvert>, ) -> Result; fn get_commit(&self, overlay: &OverlayId, id: &ObjectId) -> Result, ServerError>; }