objectiveai_sdk/functions/check/
check_scalar_fields.rs1use rand::SeedableRng;
6use rand::rngs::StdRng;
7use serde::Deserialize;
8
9use super::check_input_schema::check_input_schema;
10use super::example_inputs;
11use crate::functions::expression::InputSchema;
12use schemars::JsonSchema;
13
14#[derive(Debug, Clone, Deserialize, JsonSchema)]
16#[schemars(rename = "functions.check.ScalarFieldsValidation")]
17pub struct ScalarFieldsValidation {
18 pub input_schema: InputSchema,
19}
20
21pub fn check_scalar_fields(
26 fields: ScalarFieldsValidation,
27 seed: Option<i64>,
28) -> Result<(), String> {
29 check_input_schema(&fields.input_schema)?;
30
31 let rng = match seed {
32 Some(s) => StdRng::seed_from_u64(s as u64),
33 None => StdRng::from_os_rng(),
34 };
35
36 let mut count = 0usize;
37 for (_, ref _input) in
38 example_inputs::generate_seeded(&fields.input_schema, rng).enumerate()
39 {
40 count += 1;
41 }
42
43 if count == 0 {
44 return Err(
45 "SF01: Failed to generate any example inputs from input_schema"
46 .to_string(),
47 );
48 }
49
50 Ok(())
51}