Skip to content

Commit 222ad58

Browse files
Fix connection string resolution
1 parent bb64f2c commit 222ad58

File tree

3 files changed

+44
-56
lines changed

3 files changed

+44
-56
lines changed

src/Umbraco.Commerce.Deploy/Composing/UmbracoCommerceDeployComposer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public void Compose(IUmbracoBuilder builder)
2121
// Ensure SQLite support for local development
2222
builder.WithUmbracoCommerceBuilder().AddSQLite();
2323

24-
builder.Services.AddUnique<IConfigureOptions<ConnectionStringConfig>, ConfigureUmbracoCommerceConnectionString>();
24+
builder.Services.AddUnique<IConfigureOptions<ConnectionStringConfig>, ConfigureUmbracoCommerceDeployConnectionString>();
2525

2626
builder.Services.AddSingleton<UmbracoCommerceDeploySettingsAccessor>();
2727

src/Umbraco.Commerce.Deploy/Configuration/ConfigureUmbracoCommerceConnectionString.cs

Lines changed: 0 additions & 55 deletions
This file was deleted.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System;
2+
using Microsoft.Extensions.Configuration;
3+
using Microsoft.Extensions.Options;
4+
using Umbraco.Commerce.Cms.Data;
5+
using Umbraco.Commerce.Core.Data;
6+
using UmbConstants = Umbraco.Cms.Core.Constants;
7+
8+
namespace Umbraco.Commerce.Deploy.Configuration;
9+
10+
public class ConfigureUmbracoCommerceDeployConnectionString(IConfiguration configuration) : UmbracoConnectionStringConfigurator(configuration)
11+
{
12+
public override void Configure(ConnectionStringConfig options)
13+
=> Configure(Options.DefaultName, options);
14+
15+
public override void Configure(string? name, ConnectionStringConfig options)
16+
{
17+
// Perform the default configuration
18+
base.Configure(name, options);
19+
20+
// Only configure if we are using the default Umbraco connection string
21+
if (options.Name != UmbConstants.System.UmbracoConnectionName)
22+
{
23+
return;
24+
}
25+
26+
// If Umbraco is configured to use SQLIte, then configure Umbraco Commerce to use it's own SQLite database
27+
if (options.ProviderName.Contains("SQLite", StringComparison.InvariantCultureIgnoreCase))
28+
{
29+
var dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString();
30+
var ucDbConnectionString = $"Data Source={dataDirectory}/Umbraco.Commerce.sqlite.db;Mode=ReadWrite;Foreign Keys=True;Pooling=True;Cache=Private";
31+
var ucDbProviderName = Persistence.Sqlite.Constants.ProviderName;
32+
33+
// Update configuration
34+
configuration[$"ConnectionStrings:{name}"] = ucDbConnectionString;
35+
configuration[$"ConnectionStrings:{name}{ConnectionStringConfig.ProviderNamePostfix}"] = ucDbProviderName;
36+
37+
// Update options
38+
options.Name = name;
39+
options.ConnectionString = ucDbConnectionString;
40+
options.ProviderName = ucDbProviderName;
41+
}
42+
}
43+
}

0 commit comments

Comments
 (0)