Runs a SurrealQL function.
Method Syntax
db.run(function)
Arguments
| Argument | Description |
|---|
function | Specifies the path of the function. |
Example usage
Calling an existing SurrealQL function:
use surrealdb::engine::any::connect;
use surrealdb::opt::auth::Root;
#[tokio::main]
async fn main() -> surrealdb::Result<()> {
let db = connect("ws://localhost:8000").await?;
db.signin(Root {
username: "root".into(),
password: "secret".into()
})
.await?;
let res: f32 = db.run("rand::float").await?;
dbg!(res);
Ok(())
}
User-defined functions can be called as well.
use surrealdb::engine::any::connect;
use surrealdb::opt::auth::Root;
#[tokio::main]
async fn main() -> surrealdb::Result<()> {
let db = connect("ws://localhost:8000").await?;
db.signin(Root {
username: "root".into(),
password: "secret".into(),
})
.await?;
db.use_ns("ns").use_db("db").await?;
db.query("DEFINE FUNCTION fn::return_one() -> int { RETURN 1 };")
.await?;
let res: i32 = db.run("fn::return_one").await?;
dbg!(res);
Ok(())
}
The return value of the .run() function can be deserialized in the same way as any other database function.
use surrealdb::engine::any::connect;
use surrealdb::opt::auth::Root;
use surrealdb_types::SurrealValue;
#[derive(Debug, SurrealValue)]
struct Person {
first_name: String,
middle_name: String,
last_name: String,
}
#[tokio::main]
async fn main() -> surrealdb::Result<()> {
let db = connect("ws://localhost:8000").await?;
db.signin(Root {
username: "root".to_string(),
password: "secret".to_string(),
})
.await?;
db.use_ns("ns").use_db("db").await?;
db.query(
"DEFINE FUNCTION fn::j_jonah_jameson() -> object { RETURN
{
first_name: 'J',
middle_name: 'Jonah',
last_name: 'Jameson'
}
};",
)
.await?;
let res: Person = db.run("fn::j_jonah_jameson").await?;
dbg!(res);
Ok(())
}
Runs a SurrealQL function.
Method Syntax
db.run(function)
Arguments
| Argument | Description |
|---|
function | Specifies the path of the function. |
Example usage
Calling an existing SurrealQL function:
use surrealdb::engine::any::connect;
use surrealdb::opt::auth::Root;
#[tokio::main]
async fn main() -> surrealdb::Result<()> {
let db = connect("ws://localhost:8000").await?;
db.signin(Root {
username: "root",
password: "secret"
})
.await?;
let res: f32 = db.run("rand::float").await?;
dbg!(res);
Ok(())
}
User-defined functions can be called as well.
use surrealdb::engine::any::connect;
use surrealdb::opt::auth::Root;
#[tokio::main]
async fn main() -> surrealdb::Result<()> {
let db = connect("ws://localhost:8000").await?;
db.signin(Root {
username: "root",
password: "secret",
})
.await?;
db.use_ns("ns").use_db("db").await?;
db.query("DEFINE FUNCTION fn::return_one() -> int { RETURN 1 };")
.await?;
let res: i32 = db.run("fn::return_one").await?;
dbg!(res);
Ok(())
}
The return value of the .run() function can be deserialized in the same way as any other database function.
use serde::Deserialize;
use surrealdb::engine::any::connect;
use surrealdb::opt::auth::Root;
#[derive(Debug, Deserialize)]
struct Person {
first_name: String,
middle_name: String,
last_name: String,
}
#[tokio::main]
async fn main() -> surrealdb::Result<()> {
let db = connect("ws://localhost:8000").await?;
db.signin(Root {
username: "root",
password: "secret",
})
.await?;
db.use_ns("ns").use_db("db").await?;
db.query(
"DEFINE FUNCTION fn::j_jonah_jameson() -> object { RETURN
{
first_name: 'J',
middle_name: 'Jonah',
last_name: 'Jameson'
}
};",
)
.await?;
let res: Person = db.run("fn::j_jonah_jameson").await?;
dbg!(res);
Ok(())
}