ragit_api/
lib.rs

1use ragit_fs::{WriteMode, read_string, write_string};
2
3mod api_provider;
4pub mod audit;
5mod error;
6mod message;
7mod model;
8mod request;
9mod response;
10
11#[cfg(test)]
12mod tests;
13
14pub use crate::api_provider::ApiProvider;
15pub use crate::audit::AuditRecord;
16pub use crate::error::Error;
17pub use crate::message::message_contents_to_json_array;
18pub use crate::model::{Model, ModelRaw, get_model_by_name};
19pub use crate::request::Request;
20pub use crate::response::Response;
21
22pub use ragit_pdl::{
23    JsonType,
24    ImageType,
25    Message,
26    MessageContent,
27    Role,
28    Schema,
29};
30
31pub fn load_models(json_path: &str) -> Result<Vec<Model>, Error> {
32    let models = read_string(json_path)?;
33    let models: Vec<ModelRaw> = serde_json::from_str(&models)?;
34    let mut result = Vec::with_capacity(models.len());
35
36    for model in models.iter() {
37        result.push(Model::try_from(model)?);
38    }
39
40    Ok(result)
41}
42
43pub fn save_models(models: &[Model], path: &str) -> Result<(), Error> {
44    let models: Vec<ModelRaw> = models.iter().map(|model| model.into()).collect();
45    Ok(write_string(
46        path,
47        &serde_json::to_string_pretty(&models)?,
48        WriteMode::CreateOrTruncate,
49    )?)
50}