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](https://aurabase.cloud)** (Backend-as-a-Service open-source haute performance).

🌐 **Site officiel** : [https://aurabase.cloud](https://aurabase.cloud)  
📖 **Documentation** : [https://aurabase.cloud/docs](https://aurabase.cloud)  
🐙 **GitHub** : [daylami555/aurabase](https://github.com/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` :

```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.

```rust
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(())
}
```