SqlExtensionsAspire–part 2–code

I wanted the code to be easy used by any programmer that uses SqlServer in ASPIRE , such as

var paramPass = builder.AddParameter("password", "myP@ssW0rd");
var sqlserver = builder.AddSqlServer("sqlserver", paramPass, 1433);
var db = sqlserver.AddDatabase("DepEmp")
    .WithSqlPadViewerForDB(sqlserver)
    .WithSqlCommand("delete","delete from Employee")
    .ExecuteSqlServerScripts(DBFiles.FilesToCreate);

For this to work, I create extensions – you can see them at https://github.com/ignatandrei/aspireExtensions/blob/main/src/SqlServerExtensions/SqlExtensionsAspire/SqlServerExtensions.cs

Some problems that I solved
1. Versioning
The Aspire version was 9.3 , so my version of the nuget SqlExtensionsAspire is 93.2025.208.1818 ( dependent version and date )
2. Logging into Aspire
The code for a command to log into Aspire resource is

//db is the resource 
db.WithCommand(name, name,async ecc =>
{
// Get the resource logger service to log command execution
var log= ecc.ServiceProvider.GetService(typeof(ResourceLoggerService)) as ResourceLoggerService;
if (log == null) return new ExecuteCommandResult()
{
    Success = false,
    ErrorMessage = $"no logging available"
};

// Get a logger instance for this specific database resource
var lg = log.GetLogger(db.Resource);
if (lg == null) return new ExecuteCommandResult()
{
    Success = false,
    ErrorMessage = $"on {db.Resource.Name} no logger"
};
//now you can use lg to log
        

3. Documentation If you add a docker to Aspire, you should read the documentation carefully

    // Create SQLPad container with pre-configured connections
        var sqlpad = builder
    .AddContainer("sqlpad", "sqlpad/sqlpad:latest")
    .WithEndpoint(5600, 3000, "http")
    
    // Disable authentication for development ease
    .WithEnvironment("SQLPAD_AUTH_DISABLED", "true")
    .WithEnvironment("SQLPAD_AUTH_DISABLED_DEFAULT_ROLE", "Admin")
    .WithEnvironment("SQLPAD_ADMIN", "admin@sqlpad.com")

    .WithEnvironment("SQLPAD_ADMIN_PASSWORD", "admin")
    
    // Configure connection to the target database
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo__name", sqlserver.Resource.Name)
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo__driver", "sqlserver")
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo__host", sqlserver.Resource.Name)
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo__database", db.Resource.Name)
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo__username", "sa")
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo__password", sqlserver.Resource.PasswordParameter.Value)

    // Configure connection to the master database for server-level operations
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo1__name", "SqlMaster")
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo1__driver", "sqlserver")
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo1__host", sqlserver.Resource.Name)
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo1__database", "master")
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo1__username", "sa")
    .WithEnvironment("SQLPAD_CONNECTIONS__sqlserverdemo1__password", sqlserver.Resource.PasswordParameter.Value)
    
    // Ensure SQLPad starts after the database and server are ready
    .WithParentRelationship(db)
    .WaitFor(db)
    .WaitFor(sqlserver)

So please use SqlExtensionsAspire  and tell me how it was.


Posted

in

, , ,

by

Tags: