use serde::{Deserialize, Serialize};
#[derive(
Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema,
)]
#[schemars(rename = "filesystem.config.Favorite")]
pub struct Favorite {
name: String,
#[serde(flatten)]
#[schemars(
schema_with = "objectiveai_sdk::flatten_schema::<objectiveai_sdk::RemotePathCommitOptional>"
)]
pub path: objectiveai_sdk::RemotePathCommitOptional,
note: String,
}
impl Favorite {
pub fn new(
name: String,
path: objectiveai_sdk::RemotePathCommitOptional,
note: String,
) -> Result<Self, super::super::Error> {
validate_favorite_name(&name)?;
validate_favorite_note(¬e)?;
Ok(Self { name, path, note })
}
pub fn get_name(&self) -> &str {
&self.name
}
pub fn set_name(
&mut self,
name: String,
) -> Result<(), super::super::Error> {
validate_favorite_name(&name)?;
self.name = name;
Ok(())
}
pub fn get_note(&self) -> &str {
&self.note
}
pub fn set_note(
&mut self,
note: String,
) -> Result<(), super::super::Error> {
validate_favorite_note(¬e)?;
self.note = note;
Ok(())
}
pub fn path(&self) -> &objectiveai_sdk::RemotePathCommitOptional {
&self.path
}
}
#[derive(
Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema,
)]
#[schemars(rename = "filesystem.config.PairFavorite")]
pub struct PairFavorite {
name: String,
pub function: objectiveai_sdk::RemotePathCommitOptional,
pub profile: objectiveai_sdk::RemotePathCommitOptional,
note: String,
}
impl PairFavorite {
pub fn new(
name: String,
function: objectiveai_sdk::RemotePathCommitOptional,
profile: objectiveai_sdk::RemotePathCommitOptional,
note: String,
) -> Result<Self, super::super::Error> {
validate_favorite_name(&name)?;
validate_favorite_note(¬e)?;
Ok(Self {
name,
function,
profile,
note,
})
}
pub fn get_name(&self) -> &str {
&self.name
}
pub fn set_name(
&mut self,
name: String,
) -> Result<(), super::super::Error> {
validate_favorite_name(&name)?;
self.name = name;
Ok(())
}
pub fn get_note(&self) -> &str {
&self.note
}
pub fn set_note(
&mut self,
note: String,
) -> Result<(), super::super::Error> {
validate_favorite_note(¬e)?;
self.note = note;
Ok(())
}
}
pub fn validate_favorite_name(name: &str) -> Result<(), super::super::Error> {
if name.is_empty() || name.len() > 64 {
return Err(super::super::Error::InvalidFavoriteName(name.to_string()));
}
if !name.chars().all(|c| c.is_ascii_alphanumeric() || c == '-') {
return Err(super::super::Error::InvalidFavoriteName(name.to_string()));
}
Ok(())
}
pub fn validate_favorite_note(note: &str) -> Result<(), super::super::Error> {
if note.len() > 512 {
return Err(super::super::Error::InvalidFavoriteNote(note.to_string()));
}
Ok(())
}