rullst-orm 3.0.0

An Active Record ORM for Rust, inspired by Laravel's Orm.
Documentation
use async_trait::async_trait;
use serde_json::Value;
use std::sync::OnceLock;

#[async_trait]
pub trait SearchEngine: Send + Sync {
    async fn update(&self, table: &str, id: i32, payload: Value) -> Result<(), sqlx::Error>;
    async fn delete(&self, table: &str, id: i32) -> Result<(), sqlx::Error>;
    async fn search(&self, table: &str, query: &str) -> Result<Vec<i32>, sqlx::Error>;
}

static SEARCH_ENGINE: OnceLock<Box<dyn SearchEngine>> = OnceLock::new();

pub fn set_search_engine(engine: Box<dyn SearchEngine>) {
    let _ = SEARCH_ENGINE.set(engine);
}

pub fn get_search_engine() -> Option<&'static dyn SearchEngine> {
    SEARCH_ENGINE.get().map(|e| &**e)
}