1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4#[serde(tag = "role", content = "text", rename_all = "lowercase")]
5pub enum Turn {
6 Student(String),
7 Teacher(String),
8}
9
10#[derive(Debug, Clone, Default)]
11pub struct Session {
12 pub turns: Vec<Turn>,
13}
14
15impl Session {
16 pub fn push_student(&mut self, text: impl Into<String>) {
17 self.turns.push(Turn::Student(text.into()));
18 }
19
20 pub fn push_teacher(&mut self, text: impl Into<String>) {
21 self.turns.push(Turn::Teacher(text.into()));
22 }
23
24 pub fn reset(&mut self) {
25 self.turns.clear();
26 }
27}