premix-orm 1.0.9-alpha

Alpha research ORM for Rust. Facade crate for premix-core and premix-macros (not production-ready).
Documentation
#![cfg(feature = "metrics")]

use premix_orm::metrics::install_prometheus_recorder;
use premix_orm::prelude::*;
use sqlx::Sqlite;

#[derive(Model, Debug, Clone)]
struct MetricUser {
    id: i32,
    name: String,
}

#[tokio::test]
async fn metrics_are_recorded_for_queries() {
    let handle = install_prometheus_recorder().expect("recorder");
    let pool = Premix::smart_sqlite_pool("sqlite::memory:")
        .await
        .expect("pool");
    Premix::sync::<Sqlite, MetricUser>(&pool)
        .await
        .expect("sync");

    let mut user = MetricUser {
        id: 0,
        name: "Metric".to_string(),
    };
    user.save(&pool).await.expect("save");

    let _ = MetricUser::find_in_pool(&pool)
        .filter_eq("name", "Metric")
        .all()
        .await
        .expect("all");

    metrics::counter!("premix.test.counter").increment(1);
    metrics::gauge!("premix.test.gauge").set(1.0);

    let rendered = handle.render();
    assert!(rendered.contains("premix_test_counter"));
    assert!(rendered.contains("premix_test_gauge"));
}