Community程式設計與開發github.com

24601/surreal-skills

SurrealDB Surrealism WASM 擴充功能開發。編寫 Rust 函式、編譯為 WASM、部署為資料庫模組。屬於 surreal-skills 集合的一部分。

surreal-skills 是什麼?

此技能讓開發者能為 SurrealDB 3 建立自訂 WebAssembly (WASM) 擴充功能。您可以使用 Rust 編寫自訂函式,透過 #[surrealism] 巨集進行標註,然後使用 SurrealDB CLI 將它們編譯為 .wasm 二進位檔。編譯完成後,您可以使用 SurrealQL 的 DEFINE BUCKET 和 DEFINE MODULE 語句在 SurrealDB 中註冊這些模組,並像呼叫原生資料庫函式一樣從查詢中呼叫它們。此技能支援的主要平台是 SurrealDB 3,並包含完整的開發流程:從專案初始化(含 surrealism.toml 清單)到編譯和部署。它對需要直接在 SurrealQL 中使用自訂邏輯的開發者特別有用,例如產生測試用的假資料、實作領域特定邏輯(如語言處理或財務計算),或運用核心 SurrealDB 未提供的獨特 Rust crate 功能。請注意,Surrealism 功能仍在積極開發中,API 可能會隨 SurrealDB 3.x 版本變更。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/24601/surreal-skills/tree/main/skills/surrealism

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Surrealism -- SurrealDB 的 WASM 擴充功能

SurrealDB 3 的新功能。以 Rust 編寫自訂函式,編譯為 WebAssembly (WASM),並部署為可從 SurrealQL 呼叫的原生資料庫模組。

先決條件

  • Rust 工具鏈(穩定版)並包含 wasm32-unknown-unknown 目標
  • SurrealDB CLI v3.1.4+(內含 surreal 二進位檔及 surreal module 子指令)
  • 熟悉 SurrealQL 的 DEFINE MODULE 和 DEFINE BUCKET

開發流程

1. 標註    -- surrealism.toml + Rust 函式上的 #[surrealism]
2. 編譯    -- surreal module compile  (產生 .wasm 二進位檔)
3. 註冊    -- 在 SurrealQL 中使用 DEFINE BUCKET + DEFINE MODULE

快速開始

# 建立新的 Surrealism 專案
cargo new --lib my_extension
cd my_extension

# 新增 WASM 目標
rustup target add wasm32-unknown-unknown

# 建立 surrealism.toml(必要的清單檔)
cat > surrealism.toml << 'TOML'
[package]
name = "my_extension"
version = "0.1.0"
TOML

# 編寫您的擴充功能(以 #[surrealism] 標註)
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;

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

# 使用 SurrealDB CLI 編譯為 WASM
surreal module compile

# 在 SurrealDB 中註冊
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- 授予對 WASM 檔案的存取權限
DEFINE BUCKET my_bucket;

-- 註冊模組函式
DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm';

-- 在查詢中使用函式
SELECT my_extension::greet('World');

使用案例

  • 可從 SurrealQL 呼叫的自訂標量函式
  • 用於測試的假資料/模擬資料產生
  • 領域特定邏輯(語言處理、量化金融、自訂編碼)
  • 存取對核心 SurrealDB 來說過於專門的特定 Rust crate 功能
  • 全文搜尋的自訂分析器

狀態

Surrealism 正在積極開發中,尚未穩定。API 可能會在 SurrealDB 3.x 版本之間變更。請透過 GitHub issues/PRs 在 surrealdb/surrealdb 儲存庫提交意見回饋。

完整文件

請參閱主要技能的規則檔案以取得完整指南:

Individual skills in this repo

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

相關技能