1use crate::codec::RecordCodec;
4use gonzalo_core::RecordKind;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub struct MemoryTier {
10 pub name: String,
11 pub content: String,
12}
13impl RecordCodec for MemoryTier {}
14impl MemoryTier {
15 pub const KIND: RecordKind = RecordKind::MemoryTier;
16}
17
18#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
20pub struct Topic {
21 pub slug: String,
22 pub bullets: Vec<String>,
23}
24impl RecordCodec for Topic {}
25impl Topic {
26 pub const KIND: RecordKind = RecordKind::Topic;
27}
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32 use crate::codec::RecordCodec;
33
34 #[test]
35 fn tier_roundtrips() {
36 let t = MemoryTier {
37 name: "global".into(),
38 content: "be concise".into(),
39 };
40 assert_eq!(MemoryTier::from_body(&t.to_body().unwrap()).unwrap(), t);
41 assert_eq!(MemoryTier::KIND, RecordKind::MemoryTier);
42 }
43
44 #[test]
45 fn topic_roundtrips() {
46 let t = Topic {
47 slug: "rust".into(),
48 bullets: vec!["use clippy".into()],
49 };
50 assert_eq!(Topic::from_body(&t.to_body().unwrap()).unwrap(), t);
51 assert_eq!(Topic::KIND, RecordKind::Topic);
52 }
53}