use crate::{Room, RoomConfig, RoomSchema};
pub fn room_topic_name(room: &Room) -> String {
format!("room_{}", room.id.replace(' ', "_"))
}
pub fn history_depth(room: &Room) -> usize {
room.agent_count.max(1)
}
pub fn build_room_config(room: &Room, domain_id: u32) -> RoomConfig {
RoomConfig {
room_id: room.id.clone(),
topic: room_topic_name(room),
domain_id,
history_depth: history_depth(room),
}
}
pub fn default_schema(_room: &Room) -> RoomSchema {
RoomSchema {
fields: vec![
crate::FieldDef {
name: "room_id".into(),
type_name: "string".into(),
is_key: true,
},
crate::FieldDef {
name: "name".into(),
type_name: "string".into(),
is_key: false,
},
crate::FieldDef {
name: "agent_count".into(),
type_name: "uint32".into(),
is_key: false,
},
],
}
}