///|
pub struct BookCatalogEntry {
id : String
name : String
purpose : String
workspace_root : String
memory_scope : @core.MemoryScope
tags : Array[String]
skills : Array[String]
} derive(Debug, Eq, ToJson, FromJson)
///|
pub fn BookCatalogEntry::new(
id~ : String,
name~ : String,
purpose~ : String,
workspace_root~ : String,
memory_scope? : @core.MemoryScope = BookPrivate,
tags? : Array[String] = [],
skills? : Array[String] = [],
) -> BookCatalogEntry {
{ id, name, purpose, workspace_root, memory_scope, tags, skills }
}
///|
pub fn BookCatalogEntry::to_book_ref(self : BookCatalogEntry) -> @core.BookRef {
@core.BookRef::new(
id=self.id,
name=self.name,
purpose=self.purpose,
workspace_root=self.workspace_root,
memory_scope=self.memory_scope,
tags=self.tags,
)
}
///|
pub fn catalog_to_book_refs(
catalog : Array[BookCatalogEntry],
) -> Array[@core.BookRef] {
let books = []
for entry in catalog {
books.push(entry.to_book_ref())
}
books
}
///|
pub fn find_catalog_entry(
catalog : Array[BookCatalogEntry],
book_id : String,
) -> BookCatalogEntry? {
for entry in catalog {
if entry.id == book_id {
return Some(entry)
}
}
None
}