use crate::error::Result;
use crate::types::PaginationParams;
use crate::wami::identity::Role;
use async_trait::async_trait;
#[async_trait]
pub trait RoleStore: Send + Sync {
async fn create_role(&mut self, role: Role) -> Result<Role>;
async fn get_role(&self, role_name: &str) -> Result<Option<Role>>;
async fn update_role(&mut self, role: Role) -> Result<Role>;
async fn delete_role(&mut self, role_name: &str) -> Result<()>;
async fn list_roles(
&self,
path_prefix: Option<&str>,
pagination: Option<&PaginationParams>,
) -> Result<(Vec<Role>, bool, Option<String>)>;
}