Skip to main content

basic/
basic.rs

1use datafake_rs::DataGenerator;
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // Basic configuration with the example from README
5    let config = r#"{
6        "metadata": {
7            "name": "User Profile Generator",
8            "version": "1.0.0",
9            "description": "Generates realistic user profile data"
10        },
11        "variables": {
12            "userId": {"fake": ["uuid"]},
13            "country": {"fake": ["country_code"]}
14        },
15        "schema": {
16            "id": {"var": "userId"},
17            "profile": {
18                "name": {"fake": ["name", "en_US"]},
19                "age": {"fake": ["u8", 18, 65]},
20                "address": {
21                    "street": {"fake": ["street_address", "en_US"]},
22                    "country": {"var": "country"}
23                },
24                "bankAccount": {
25                    "bic": {"fake": ["bic"]},
26                    "bic8": {"fake": ["bic8"]},
27                    "bic11": {"fake": ["bic11"]},
28                    "balance": {"fake": ["f32", 0, 10000.00]}
29                }
30            }
31        }
32    }"#;
33
34    // Create the generator
35    let generator = DataGenerator::from_json(config)?;
36
37    // Generate fake data
38    let fake_data = generator.generate()?;
39
40    // Print the generated data
41    println!("Generated User Profile:");
42    println!("{}", serde_json::to_string_pretty(&fake_data)?);
43
44    // Generate multiple records
45    println!("\nGenerating 3 user profiles:");
46    let batch = generator.generate_batch(3)?;
47    for (i, data) in batch.iter().enumerate() {
48        println!("\nProfile {}:", i + 1);
49        println!("{}", serde_json::to_string_pretty(data)?);
50    }
51
52    Ok(())
53}