24601/surreal-skills

Développement d'extensions WASM pour SurrealDB en Rust. Écrivez des fonctions Rust, compilez-les en WASM et déployez-les en tant que modules de base de données. Fait partie de la collection surreal-skills.

Qu'est-ce que surreal-skills ?

Cette compétence permet aux développeurs de créer des extensions WASM (WebAssembly) pour SurrealDB en utilisant le langage Rust et le framework Surrealism. Avec SurrealDB 3, vous pouvez écrire des fonctions Rust personnalisées, les annoter avec `#[surrealism]`, les compiler en binaires WASM via la CLI `surreal module compile`, et les déployer comme des modules de base de données natifs appelables depuis SurrealQL. La compétence prend en charge l'ensemble du flux de développement : création de projet, compilation, enregistrement via `DEFINE BUCKET` et `DEFINE MODULE`, et exécution des fonctions dans les requêtes. Elle est utile pour les fonctions scalaires personnalisées, la génération de données fictives, la logique métier spécifique à un domaine, ou l'accès à des fonctionnalités de crates Rust non disponibles dans le cœur de SurrealDB. La compétence est destinée aux utilisateurs de SurrealDB, de la CLI SurrealDB et des outils de développement Rust, et fait partie de la collection surreal-skills. Le projet est en développement actif et son API peut encore changer.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/24601/surreal-skills/tree/main/skills/surrealism

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Surrealism -- Extensions WASM pour SurrealDB

Nouveau dans SurrealDB 3. Écrivez des fonctions personnalisées en Rust, compilez-les en WebAssembly (WASM), et déployez-les en tant que modules de base de données natifs appelables depuis SurrealQL.

Prérequis

  • Chaîne d'outils Rust (stable) avec la cible wasm32-unknown-unknown
  • CLI SurrealDB v3.1.4+ (binaire surreal avec la sous-commande surreal module)
  • Connaissance de SurrealQL : DEFINE MODULE et DEFINE BUCKET

Flux de développement

1. Annoter   -- surrealism.toml + #[surrealism] sur les fonctions Rust
2. Compiler  -- surreal module compile  (produit un binaire .wasm)
3. Enregistrer -- DEFINE BUCKET + DEFINE MODULE dans SurrealQL

Démarrage rapide

# Créer un nouveau projet Surrealism
cargo new --lib my_extension
cd my_extension

# Ajouter la cible WASM
rustup target add wasm32-unknown-unknown

# Créer surrealism.toml (manifeste requis)
cat > surrealism.toml << 'TOML'
[package]
name = "my_extension"
version = "0.1.0"
TOML

# Écrire votre extension (annoter avec #[surrealism])
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;

#[surrealism]
fn greet(name: String) -> String {
    format!("Hello, {}!", name)
}
RUST

# Compiler en WASM en utilisant la CLI SurrealDB
surreal module compile

# Enregistrer dans SurrealDB
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- Accorder l'accès au fichier WASM
DEFINE BUCKET my_bucket;

-- Enregistrer les fonctions du module
DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm';

-- Utiliser la fonction dans des requêtes
SELECT my_extension::greet('World');

Cas d'utilisation

  • Fonctions scalaires personnalisées appelables depuis SurrealQL
  • Génération de données factices/mockées pour les tests
  • Logique spécifique à un domaine (traitement du langage, finance quantitative, encodage personnalisé)
  • Accès à des fonctionnalités de crates Rust trop spécifiques pour le cœur de SurrealDB
  • Analyseurs personnalisés pour la recherche en texte intégral

Statut

Surrealism est en cours de développement actif et n'est pas encore stable. L'API peut changer entre les versions de SurrealDB 3.x. Signalez les retours via les issues/PR GitHub sur le dépôt surrealdb/surrealdb.

Documentation complète

Consultez le fichier de règle principal de la compétence pour des instructions complètes :

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

Skills associés