SurrealDbBuilderExtensions Methods
ClassMethods11 members
Provides extension methods for adding SurrealDB resources to the application model.
AddDatabase(IResourceBuilder<SurrealDbNamespaceResource>, string, string?)Section titled AddDatabase(IResourceBuilder<SurrealDbNamespaceResource>, string, string?)extensionIResourceBuilder<SurrealDbDatabaseResource> Adds a SurrealDB database to the application model. This is a child resource of a
SurrealDbNamespaceResource. public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbDatabaseResource> AddDatabase( this IResourceBuilder<SurrealDbNamespaceResource> builder, string name, string? databaseName = null) { // ... }}Parameters
builderIResourceBuilder<SurrealDbNamespaceResource>The SurrealDB resource builders.namestringThe name of the resource. This name will be used as the connection string name when referenced in a dependency.databaseNamestring?optionalThe name of the database. If not provided, this defaults to the same value as name.Returns
IResourceBuilder<SurrealDbDatabaseResource>A reference to the ApplicationModel.IResourceBuilder`1.Remarks
Add a SurrealDB container to the application model and reference it in a .NET project.
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddSurrealServer("surreal") .AddNamespace("ns") .AddDatabase("db");var api = builder.AddProject<Projects.Api>("api") .WithReference(db);
builder.Build().Run();AddNamespace(IResourceBuilder<SurrealDbServerResource>, string, string?)Section titled AddNamespace(IResourceBuilder<SurrealDbServerResource>, string, string?)extensionIResourceBuilder<SurrealDbNamespaceResource> Adds a SurrealDB namespace to the application model. This is a child resource of a
SurrealDbServerResource. public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbNamespaceResource> AddNamespace( this IResourceBuilder<SurrealDbServerResource> builder, string name, string? namespaceName = null) { // ... }}Parameters
builderIResourceBuilder<SurrealDbServerResource>The SurrealDB resource builders.namestringThe name of the resource. This name will be used as the connection string name when referenced in a dependency.namespaceNamestring?optionalThe name of the namespace. If not provided, this defaults to the same value as name.Returns
IResourceBuilder<SurrealDbNamespaceResource>A reference to the ApplicationModel.IResourceBuilder`1.Remarks
Add a SurrealDB container to the application model and reference it in a .NET project.
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddSurrealServer("surreal") .AddNamespace("ns") .AddDatabase("db");var api = builder.AddProject<Projects.Api>("api") .WithReference(db);
builder.Build().Run();AddSurrealServer(IDistributedApplicationBuilder, string, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>, int?, string, bool)Section titled AddSurrealServer(IDistributedApplicationBuilder, string, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>, int?, string, bool)extensionIResourceBuilder<SurrealDbServerResource> Adds a SurrealDB resource to the application model. A container is used for local development. The default image is and the tag is .
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbServerResource> AddSurrealServer( this IDistributedApplicationBuilder builder, string name, IResourceBuilder<ParameterResource>? userName = null, IResourceBuilder<ParameterResource>? password = null, int? port = null, string path = "memory", bool strictMode = false) { // ... }}Parameters
builderIDistributedApplicationBuilderThe Hosting.IDistributedApplicationBuilder.namestringThe name of the resource. This name will be used as the connection string name when referenced in a dependency.userNameIResourceBuilder<ParameterResource>optionalThe parameter used to provide the administrator username for the SurrealDB resource.passwordIResourceBuilder<ParameterResource>optionalThe parameter used to provide the administrator password for the SurrealDB resource. If null a random password will be generated.portint?optionalThe host port for the SurrealDB instance.pathstringoptionalSets the path for storing data. If no argument is given, the default of memory for non-persistent storage in memory is assumed.strictModebooloptionalWhether strict mode is enabled on the server.Returns
IResourceBuilder<SurrealDbServerResource>A reference to the ApplicationModel.IResourceBuilder`1.Remarks
Add a SurrealDB container to the application model and reference it in a .NET project.
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddSurrealServer("surreal") .AddNamespace("ns") .AddDatabase("db");var api = builder.AddProject<Projects.Api>("api") .WithReference(db);
builder.Build().Run();WithCreationScript(IResourceBuilder<SurrealDbNamespaceResource>, string)Section titled WithCreationScript(IResourceBuilder<SurrealDbNamespaceResource>, string)extensionIResourceBuilder<SurrealDbNamespaceResource> Defines the SQL script used to create the namespace.
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbNamespaceResource> WithCreationScript( this IResourceBuilder<SurrealDbNamespaceResource> builder, string script) { // ... }}Parameters
builderIResourceBuilder<SurrealDbNamespaceResource>The builder for the SurrealDbNamespaceResource.scriptstringThe SQL script used to create the namespace.Returns
IResourceBuilder<SurrealDbNamespaceResource>A reference to the ApplicationModel.IResourceBuilder`1.Remarks
Default script is
DEFINE NAMESPACE IF NOT EXISTS `QUOTED_NAMESPACE_NAME`;WithCreationScript(IResourceBuilder<SurrealDbDatabaseResource>, string)Section titled WithCreationScript(IResourceBuilder<SurrealDbDatabaseResource>, string)extensionIResourceBuilder<SurrealDbDatabaseResource> Defines the SQL script used to create the database.
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbDatabaseResource> WithCreationScript( this IResourceBuilder<SurrealDbDatabaseResource> builder, string script) { // ... }}Parameters
builderIResourceBuilder<SurrealDbDatabaseResource>The builder for the SurrealDbDatabaseResource.scriptstringThe SQL script used to create the database.Returns
IResourceBuilder<SurrealDbDatabaseResource>A reference to the ApplicationModel.IResourceBuilder`1.Remarks
Default script is
DEFINE DATABASE IF NOT EXISTS `QUOTED_DATABASE_NAME`;WithDataBindMount(IResourceBuilder<SurrealDbServerResource>, string)Section titled WithDataBindMount(IResourceBuilder<SurrealDbServerResource>, string)extensionIResourceBuilder<SurrealDbServerResource> Adds a bind mount for the data folder to a SurrealDB resource.
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbServerResource> WithDataBindMount( this IResourceBuilder<SurrealDbServerResource> builder, string source) { // ... }}Parameters
builderIResourceBuilder<SurrealDbServerResource>The resource builder.sourcestringThe source directory on the host to mount into the container.Returns
IResourceBuilder<SurrealDbServerResource>The ApplicationModel.IResourceBuilder`1.Remarks
Add a SurrealDB container to the application model and reference it in a .NET project. Additionally, in this example a bind mount is added to the container to allow data to be persisted across container restarts.
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddSurrealServer("surreal") .WithDataBindMount("./data/surreal/data") .AddNamespace("ns") .AddDatabase("db");var api = builder.AddProject<Projects.Api>("api") .WithReference(db);
builder.Build().Run();WithDataVolume(IResourceBuilder<SurrealDbServerResource>, string?)Section titled WithDataVolume(IResourceBuilder<SurrealDbServerResource>, string?)extensionIResourceBuilder<SurrealDbServerResource> Adds a named volume for the data folder to a SurrealDB resource.
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbServerResource> WithDataVolume( this IResourceBuilder<SurrealDbServerResource> builder, string? name = null) { // ... }}Parameters
builderIResourceBuilder<SurrealDbServerResource>The resource builder.namestring?optionalThe name of the volume. Defaults to an auto-generated name based on the application and resource names.Returns
IResourceBuilder<SurrealDbServerResource>The ApplicationModel.IResourceBuilder`1.Remarks
Add a SurrealDB container to the application model and reference it in a .NET project. Additionally, in this example a data volume is added to the container to allow data to be persisted across container restarts.
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddSurrealServer("surreal") .WithDataVolume() .AddNamespace("ns") .AddDatabase("db");var api = builder.AddProject<Projects.Api>("api") .WithReference(db);
builder.Build().Run();WithInitFiles(IResourceBuilder<SurrealDbServerResource>, string)Section titled WithInitFiles(IResourceBuilder<SurrealDbServerResource>, string)extensionIResourceBuilder<SurrealDbServerResource> Copies init files into a SurrealDB container resource.
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbServerResource> WithInitFiles( this IResourceBuilder<SurrealDbServerResource> builder, string source) { // ... }}Parameters
builderIResourceBuilder<SurrealDbServerResource>The resource builder.sourcestringThe source file on the host to copy into the container.Returns
IResourceBuilder<SurrealDbServerResource>The ApplicationModel.IResourceBuilder`1.Exceptions
DistributedApplicationExceptionSurrealDB only support importing a single script file.WithLogLevel(IResourceBuilder<SurrealDbServerResource>, LogLevel)Section titled WithLogLevel(IResourceBuilder<SurrealDbServerResource>, LogLevel)extensionIResourceBuilder<SurrealDbServerResource> Configures logging level for the SurrealDB container resource.
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbServerResource> WithLogLevel( this IResourceBuilder<SurrealDbServerResource> builder, LogLevel logLevel) { // ... }}Parameters
builderIResourceBuilder<SurrealDbServerResource>The resource builder.logLevelLogLevelThe log level to set.Returns
IResourceBuilder<SurrealDbServerResource>The ApplicationModel.IResourceBuilder`1.Remarks
This overload is not available in polyglot app hosts. Use the exported string-based overload instead.
WithOtlpExporter(IResourceBuilder<SurrealDbServerResource>)Section titled WithOtlpExporter(IResourceBuilder<SurrealDbServerResource>)extensionIResourceBuilder<SurrealDbServerResource> Injects the appropriate environment variables to allow the resource to enable sending telemetry to the dashboard. 1. It sets the OTLP endpoint to the value of the DOTNET_DASHBOARD_OTLP_ENDPOINT_URL environment variable. 2. It sets the service name and instance id to the resource name and UID. Values are injected by the orchestrator. 3. It sets a small batch schedule delay in development. This reduces the delay that OTLP exporter waits to sends telemetry and makes the dashboard telemetry pages responsive.
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<SurrealDbServerResource> WithOtlpExporter( this IResourceBuilder<SurrealDbServerResource> builder) { // ... }}Parameters
builderIResourceBuilder<SurrealDbServerResource>The resource builder.Returns
IResourceBuilder<SurrealDbServerResource>The ApplicationModel.IResourceBuilder`1.WithSurrealist(IResourceBuilder<T>, Action<IResourceBuilder<SurrealistContainerResource>>, string?)Section titled WithSurrealist(IResourceBuilder<T>, Action<IResourceBuilder<SurrealistContainerResource>>, string?)extensionIResourceBuilder<T> Adds a Surrealist UI instance for SurrealDB to the application model. The default image is and the tag is .
public static class SurrealDbBuilderExtensions{ public static IResourceBuilder<T> WithSurrealist<T>( this IResourceBuilder<T> builder, Action<IResourceBuilder<SurrealistContainerResource>>? configureContainer = null, string? containerName = null) { // ... }}Parameters
builderIResourceBuilder<T>The SurrealDB server resource builder.configureContainerAction<IResourceBuilder<SurrealistContainerResource>>optionalCallback to configure Surrealist container resource.containerNamestring?optionalThe name of the container (optional).Returns
IResourceBuilder<T>A reference to the ApplicationModel.IResourceBuilder`1.Remarks
This overload is not available in polyglot app hosts. Use the exported overload instead.