aurabase 0.1.1

Official Rust SDK for Aurabase: high-performance open-source Backend-as-a-Service (BaaS)
Documentation

aurabase-rs

SDK officiel en Rust pour interagir avec la plateforme Aurabase (Backend-as-a-Service open-source haute performance).

🌐 Site officiel : https://aurabase.cloud
📖 Documentation : https://aurabase.cloud/docs
🐙 GitHub : daylami555/aurabase


Fonctionnalités

  • Auth : Inscription, connexion, gestion des sessions, JWT, OTP, rĂ©initialisation de mot de passe, admin API.
  • Database : Query builder fluide (select, eq, filter, limit, etc.), requĂȘtes SQL brutes sĂ©curisĂ©es.
  • Realtime : Connexions WebSocket temps rĂ©el, souscription aux canaux (presence, broadcast, postgres changes).
  • Storage : Upload, download de fichiers, gestion des buckets et signed URLs.
  • Functions : Invocation de Serverless Functions (Deno / WASM).
  • AI : RAG, vector embeddings et completion.
  • Notifications : Envoi de templates d'emails et webhooks.

Installation

Ajoutez la dépendance dans votre Cargo.toml :

[dependencies]
aurabase = { path = "../aurabase-rs" } # Ou via crates.io / git
tokio = { version = "1", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

Démarrage rapide

L'URL est le projet : chaque projet est servi sur son propre sous-domaine (https://<slug>.aurabase.cloud). La passerelle y rĂ©sout le tenant depuis l'hĂŽte, puis injecte elle-mĂȘme l'identifiant de projet dans le chemin. Le client ne transporte donc aucun project_id : il ne lui faut que l'URL du projet et une clĂ© API.

use aurabase::create_client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = create_client("https://mon-projet.aurabase.cloud", "aura_anon_xxx", None);

    // 1. Authentification
    let auth_res = client.auth()
        .sign_in_with_password("user@example.com", "motdepasse123")
        .await?;
    println!("Connecté : {:?}", auth_res.user.email);

    // 2. RequĂȘte Base de donnĂ©es
    let rows: serde_json::Value = client.db()
        .from("articles")
        .select("*")
        .eq("published", "true")
        .limit(10)
        .execute()
        .await?;
    println!("Résultats : {:?}", rows);

    Ok(())
}