Mutations¶
Learn how to insert, update, and delete data in ORMDB.
Insert¶
Single Insert¶
use ormdb_proto::{Mutation, Value};
let mutation = Mutation::insert("User")
.with_field("name", Value::String("Alice".into()))
.with_field("email", Value::String("alice@example.com".into()));
let result = client.mutate(mutation).await?;
let user_id = result.inserted_id();
println!("Created user: {}", user_id);
Batch Insert¶
Insert multiple records efficiently:
use ormdb_proto::MutationBatch;
let batch = MutationBatch::new()
.add(Mutation::insert("User")
.with_field("name", Value::String("Alice".into()))
.with_field("email", Value::String("alice@example.com".into())))
.add(Mutation::insert("User")
.with_field("name", Value::String("Bob".into()))
.with_field("email", Value::String("bob@example.com".into())));
let results = client.mutate_batch(batch).await?;
Update¶
Update by ID¶
Update with Filter¶
Update multiple records matching a filter:
Delete¶
Delete by ID¶
Delete with Filter¶
Upsert¶
Insert or update based on a unique key:
let mutation = Mutation::upsert("User")
.with_field("email", Value::String("alice@example.com".into()))
.with_field("name", Value::String("Alice".into()))
.with_field("status", Value::String("active".into()));
let result = client.mutate(mutation).await?;
if result.was_inserted() {
println!("Created new user");
} else {
println!("Updated existing user");
}
Cascade Behavior¶
When deleting entities with relations, ORMDB follows the configured delete behavior:
Error Handling¶
Constraint Violations¶
use ormdb_client::Error;
match client.mutate(mutation).await {
Ok(result) => println!("Success"),
Err(Error::ConstraintViolation(e)) => {
match e {
ConstraintError::UniqueViolation { fields, .. } => {
println!("Duplicate value for: {:?}", fields);
}
ConstraintError::ForeignKeyViolation { field, .. } => {
println!("Invalid reference: {}", field);
}
_ => println!("Constraint error: {:?}", e),
}
}
Err(e) => println!("Error: {}", e),
}
Next Steps¶
- Transactions - Group mutations atomically
- Relations - Working with related data
- Error Handling - Complete error reference