oxios_kernel/kernel_handle/
persona_api.rs1use crate::persona::Persona;
4use crate::persona_manager::PersonaManager;
5use std::sync::Arc;
6
7pub struct PersonaApi {
9 pub(crate) persona_manager: Arc<PersonaManager>,
10}
11
12impl PersonaApi {
13 pub fn new(persona_manager: Arc<PersonaManager>) -> Self {
15 Self { persona_manager }
16 }
17 pub fn list(&self) -> Vec<Persona> {
19 self.persona_manager.store().list_all()
20 }
21
22 pub fn get(&self, id: &str) -> Option<Persona> {
24 self.persona_manager.store().get(id)
25 }
26
27 pub fn create(&self, persona: Persona) {
29 self.persona_manager.store().register(persona);
30 }
31
32 pub fn update(&self, id: &str, persona: Persona) -> anyhow::Result<()> {
34 self.persona_manager.store().update(id, persona)
35 }
36
37 pub fn delete(&self, id: &str) -> anyhow::Result<()> {
39 self.persona_manager.store().delete(id)
40 }
41
42 pub fn active(&self) -> Option<Persona> {
44 self.persona_manager.get_active_persona()
45 }
46
47 pub fn set_active(&self, id: &str) -> anyhow::Result<()> {
49 self.persona_manager.set_active_persona(id)
50 }
51
52 pub fn count(&self) -> usize {
54 self.persona_manager.store().len()
55 }
56
57 pub fn list_enabled(&self) -> Vec<Persona> {
59 self.persona_manager.store().list_enabled()
60 }
61}