Crate surrealdb_migrations
source ·Expand description
An awesome SurrealDB migration tool, with a user-friendly CLI and a versatile Rust library that enables seamless integration into any project.
§The philosophy
The SurrealDB Migrations project aims to simplify the creation of a SurrealDB database schema and the evolution of the database through migrations. A typical SurrealDB migration project is divided into 3 categories: schema, event and migration.
A schema file represents no more than one SurrealDB table.
The list of schemas can be seen as the Query model (in a CQRS pattern).
The schemas
folder can be seen as a view of the current data model.
An event file represents no more than one SurrealDB event and the underlying table.
The list of events can be seen as the Command model (in a CQRS pattern).
The events
folder can be seen as a view of the different ways to update the data model.
A migration file represents a change in SurrealDB data. It can be a change in the point of time between two schema changes. Examples are: when a column is renamed or dropped, when a table is renamed or dropped, when a new data is required (with default value), etc…
§Get started
use surrealdb_migrations::MigrationRunner;
use surrealdb::engine::any::connect;
use surrealdb::opt::auth::Root;
async fn main() -> Result<()> {
let db = connect("ws://localhost:8000").await?;
// Signin as a namespace, database, or root user
db.signin(Root {
username: "root",
password: "root",
}).await?;
// Select a specific namespace / database
db.use_ns("namespace").use_db("database").await?;
// Apply all migrations
MigrationRunner::new(&db)
.up()
.await
.expect("Failed to apply migrations");
Ok(())
}
Structs§
- The main entry point for the library, used to apply migrations.
Type Aliases§
- SurrealdbMigrationsDeprecated