radixdb-orm 1.1.0

Language-neutral RadixDB ORM IR, descriptors, and SQL renderer
Documentation
use std::fs;
use std::path::PathBuf;

use radixdb_orm::{generate_rust_database, DatabaseDescriptor, DescriptorEnvelope, DescriptorKind};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut arguments = std::env::args_os().skip(1);
    let input = arguments
        .next()
        .map(PathBuf::from)
        .ok_or("usage: radixdb-orm-codegen <descriptor.json> <output.rs>")?;
    let output = arguments
        .next()
        .map(PathBuf::from)
        .ok_or("usage: radixdb-orm-codegen <descriptor.json> <output.rs>")?;
    if arguments.next().is_some() {
        return Err("usage: radixdb-orm-codegen <descriptor.json> <output.rs>".into());
    }
    let json = fs::read_to_string(&input)?;
    let descriptor =
        DescriptorEnvelope::<DatabaseDescriptor>::from_json(&json, DescriptorKind::Database)?;
    let generated = generate_rust_database(&descriptor)?;
    fs::write(output, generated.source)?;
    Ok(())
}