Skip to main content

oneiros_model/entities/
level.rs

1use serde::{Deserialize, Serialize};
2
3use crate::*;
4
5#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, schemars::JsonSchema)]
6pub struct Level {
7    pub name: LevelName,
8    pub description: Description,
9    pub prompt: Prompt,
10}
11
12impl Level {
13    pub fn init(
14        name: impl Into<LevelName>,
15        description: impl Into<Description>,
16        prompt: impl Into<Prompt>,
17    ) -> Self {
18        Self {
19            name: name.into(),
20            description: description.into(),
21            prompt: prompt.into(),
22        }
23    }
24
25    pub fn construct_from_db(
26        (name, description, prompt): (impl AsRef<str>, impl AsRef<str>, impl AsRef<str>),
27    ) -> Level {
28        Level {
29            name: LevelName::new(name),
30            description: Description::new(description),
31            prompt: Prompt::new(prompt),
32        }
33    }
34}
35
36domain_name!(LevelName);