sync full source from private myoffice

This commit is contained in:
myoffice-sync
2026-08-05 10:55:09 +00:00
parent 874796c860
commit 405abdfe69
714 changed files with 70352 additions and 234 deletions
+48
View File
@@ -0,0 +1,48 @@
namespace MyOffice.Shared;
using Microsoft.Extensions.Configuration;
public static class SharedConfiguration
{
public const string BaseFileName = "appsettings.shared.json";
/// <summary>
/// Adds shared JSON sources to an existing configuration builder (base + environment overlay).
/// </summary>
public static IConfigurationBuilder AddSharedAppSettings(
this IConfigurationBuilder builder,
string environmentName,
string? basePath = null,
bool optional = false,
bool reloadOnChange = true
)
{
basePath ??= AppContext.BaseDirectory;
builder
.AddJsonFile(Path.Combine(basePath, BaseFileName), optional: optional, reloadOnChange: reloadOnChange)
.AddJsonFile(
Path.Combine(basePath, $"appsettings.shared.{environmentName}.json"),
optional: true,
reloadOnChange: reloadOnChange);
return builder;
}
/// <summary>
/// Builds a standalone configuration for design-time tools (EF migrations, etc.).
/// Layering: base shared → environment shared → environment variables.
/// </summary>
public static IConfiguration Build(string? environmentName = null)
{
environmentName ??= Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
?? Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")
?? "Production";
return new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddSharedAppSettings(environmentName, optional: false, reloadOnChange: false)
.AddEnvironmentVariables()
.Build();
}
}
+40
View File
@@ -0,0 +1,40 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<None Remove="appsettings.shared.json" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.shared.Development.json" CopyToPublishDirectory="Never">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
<Content Include="appsettings.shared.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="appsettings.shared.Production.json" CopyToPublishDirectory="Never">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
<Content Include="appsettings.shared.Docker.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.10" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="10.0.10" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="10.0.10" />
</ItemGroup>
</Project>
@@ -0,0 +1,5 @@
{
"ConnectionStrings": {
"npgsql": "Host=postgres;Port=5432;Database=myoffice;Username=myoffice;Password=myoffice"
}
}
+7
View File
@@ -0,0 +1,7 @@
{
"ConnectionStrings": {
"sqlite": "Filename=AppDbContext.Dev.db",
"mssql": "",
"npgsql": ""
}
}