Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 48 additions & 47 deletions DevStore.slnx
Original file line number Diff line number Diff line change
@@ -1,49 +1,50 @@
<Solution>
<Folder Name="/src/" />
<Folder Name="/src/ApiGateways/" />
<Folder Name="/src/ApiGateways/Checkout/">
<Project Path="src/api-gateways/DevStore.Bff.Checkout/DevStore.Bff.Checkout.csproj" />
</Folder>
<Folder Name="/src/Building Blocks/" />
<Folder Name="/src/Building Blocks/Core/">
<Project Path="src/building-blocks/DevStore.Core/DevStore.Core.csproj" />
</Folder>
<Folder Name="/src/Building Blocks/MessageBus/">
<Project Path="src/building-blocks/DevStore.MessageBus/DevStore.MessageBus.csproj" />
</Folder>
<Folder Name="/src/Building Blocks/Services/">
<Project Path="src/building-blocks/DevStore.WebAPI.Core/DevStore.WebAPI.Core.csproj" />
</Folder>
<Folder Name="/src/Services/" />
<Folder Name="/src/Services/Billing/">
<Project Path="src/services/DevStore.Billing.API/DevStore.Billing.API.csproj" />
<Project Path="src/services/DevStore.Billing.DevsPay/DevStore.Billing.DevsPay.csproj" />
</Folder>
<Folder Name="/src/Services/Catalog/">
<Project Path="src/services/DevStore.Catalog.API/DevStore.Catalog.API.csproj" />
</Folder>
<Folder Name="/src/Services/Customer/">
<Project Path="src/services/DevStore.Customers.API/DevStore.Customers.API.csproj" />
</Folder>
<Folder Name="/src/Services/Identity/">
<Project Path="src/services/DevStore.Identity.API/DevStore.Identity.API.csproj" />
</Folder>
<Folder Name="/src/Services/Order/">
<Project Path="src/services/DevStore.Orders.API/DevStore.Orders.API.csproj" />
<Project Path="src/services/DevStore.Orders.Domain/DevStore.Orders.Domain.csproj" />
<Project Path="src/services/DevStore.Orders.Infra/DevStore.Orders.Infra.csproj" />
</Folder>
<Folder Name="/src/Services/ShoppingCart/">
<Project Path="src/services/DevStore.ShoppingCart.API/DevStore.ShoppingCart.API.csproj" />
</Folder>
<Folder Name="/src/Web/" />
<Folder Name="/src/Web/HealthCheck/">
<Project Path="src/web/DevStore.WebApp.Status/DevStore.WebApp.Status.csproj" />
</Folder>
<Folder Name="/src/Web/MVC/">
<Project Path="src/web/DevStore.WebApp.MVC/DevStore.WebApp.MVC.csproj" />
</Folder>
<Folder Name="/Tests/">
<Project Path="src\tests\DevStore.Tests\DevStore.Tests.csproj" Type="Classic C#" />
</Folder>
<Folder Name="/src/"/>
<Folder Name="/src/ApiGateways/"/>
<Folder Name="/src/ApiGateways/Checkout/">
<Project Path="src/api-gateways/DevStore.Bff.Checkout/DevStore.Bff.Checkout.csproj"/>
</Folder>
<Folder Name="/src/Building Blocks/"/>
<Folder Name="/src/Building Blocks/Core/">
<Project Path="src/building-blocks/DevStore.Core/DevStore.Core.csproj"/>
</Folder>
<Folder Name="/src/Building Blocks/MessageBus/">
<Project Path="src/building-blocks/DevStore.MessageBus/DevStore.MessageBus.csproj"/>
</Folder>
<Folder Name="/src/Building Blocks/Services/">
<Project Path="src/building-blocks/DevStore.WebAPI.Core/DevStore.WebAPI.Core.csproj"/>
<Project Path="src\building-blocks\DevStore.Infra.Core\DevStore.Infra.Core.csproj" Type="Classic C#"/>
</Folder>
<Folder Name="/src/Services/"/>
<Folder Name="/src/Services/Billing/">
<Project Path="src/services/DevStore.Billing.API/DevStore.Billing.API.csproj"/>
<Project Path="src/services/DevStore.Billing.DevsPay/DevStore.Billing.DevsPay.csproj"/>
</Folder>
<Folder Name="/src/Services/Catalog/">
<Project Path="src/services/DevStore.Catalog.API/DevStore.Catalog.API.csproj"/>
</Folder>
<Folder Name="/src/Services/Customer/">
<Project Path="src/services/DevStore.Customers.API/DevStore.Customers.API.csproj"/>
</Folder>
<Folder Name="/src/Services/Identity/">
<Project Path="src/services/DevStore.Identity.API/DevStore.Identity.API.csproj"/>
</Folder>
<Folder Name="/src/Services/Order/">
<Project Path="src/services/DevStore.Orders.API/DevStore.Orders.API.csproj"/>
<Project Path="src/services/DevStore.Orders.Domain/DevStore.Orders.Domain.csproj"/>
<Project Path="src/services/DevStore.Orders.Infra/DevStore.Orders.Infra.csproj"/>
</Folder>
<Folder Name="/src/Services/ShoppingCart/">
<Project Path="src/services/DevStore.ShoppingCart.API/DevStore.ShoppingCart.API.csproj"/>
</Folder>
<Folder Name="/src/Web/"/>
<Folder Name="/src/Web/HealthCheck/">
<Project Path="src/web/DevStore.WebApp.Status/DevStore.WebApp.Status.csproj"/>
</Folder>
<Folder Name="/src/Web/MVC/">
<Project Path="src/web/DevStore.WebApp.MVC/DevStore.WebApp.MVC.csproj"/>
</Folder>
<Folder Name="/Tests/">
<Project Path="src\tests\DevStore.Tests\DevStore.Tests.csproj" Type="Classic C#"/>
</Folder>
</Solution>
63 changes: 63 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<Project>
<ItemGroup>
<PackageVersion Include="AspNetCore.HealthChecks.MySql" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.NpgSql" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.Rabbitmq" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.Sqlite" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.SqlServer" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.UI" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.UI.Client" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.UI.MySql.Storage" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.UI.PostgreSQL.Storage" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.UI.SQLite.Storage" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.UI.SqlServer.Storage" Version="9.0.0"/>
<PackageVersion Include="AspNetCore.HealthChecks.Uris" Version="9.0.0"/>
<PackageVersion Include="Bogus" Version="35.6.3"/>
<PackageVersion Include="BuildBundlerMinifier" Version="3.2.449"/>
<PackageVersion Include="coverlet.collector" Version="6.0.4"/>
<PackageVersion Include="Dapper" Version="2.1.66"/>
<PackageVersion Include="FluentValidation" Version="12.0.0"/>
<PackageVersion Include="Grpc.AspNetCore" Version="2.71.0"/>
<PackageVersion Include="Grpc.Core.Api" Version="2.71.0"/>
<PackageVersion Include="Grpc.Net.ClientFactory" Version="2.71.0"/>
<PackageVersion Include="Grpc.Tools" Version="2.72.0"/>
<PackageVersion Include="MassTransit.RabbitMQ" Version="8.5.1"/>
<PackageVersion Include="mediatr" Version="13.0.0"/>
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.8"/>
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="9.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.8"/>
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.8"/>
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.8"/>
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.8"/>
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.8"/>
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.8"/>
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.8"/>
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.8"/>
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.8"/>
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.8"/>
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.8"/>
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="9.0.8"/>
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1"/>
<PackageVersion Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.22.1"/>
<PackageVersion Include="MySql.EntityFrameworkCore" Version="9.0.6"/>
<PackageVersion Include="NetDevPack" Version="8.0.2"/>
<PackageVersion Include="NetDevPack.Identity" Version="7.0.1"/>
<PackageVersion Include="NetDevPack.Security.Jwt.AspNetCore" Version="8.2.2"/>
<PackageVersion Include="NetDevPack.Security.Jwt.Store.EntityFrameworkCore" Version="8.2.2"/>
<PackageVersion Include="NetDevPack.Security.JwtExtensions" Version="8.0.0"/>
<PackageVersion Include="NetDevPack.Security.PasswordHasher.Argon2" Version="7.1.0"/>
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4"/>
<PackageVersion Include="NSwag.AspNetCore" Version="14.4.0"/>
<PackageVersion Include="Polly" Version="8.6.2"/>
<PackageVersion Include="RefIt" Version="8.0.0"/>
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0"/>
<PackageVersion Include="Serilog.Sinks.Seq" Version="9.0.0"/>
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.3"/>
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.13.0"/>
<PackageVersion Include="Xunit" Version="2.9.3"/>
<PackageVersion Include="Xunit.Extensions.AssemblyFixture" Version="2.6.0"/>
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.3"/>
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.0"/>
</ItemGroup>
</Project>
Binary file not shown.
Binary file not shown.
20 changes: 11 additions & 9 deletions src/building-blocks/DevStore.Core/DevStore.Core.csproj
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="FluentValidation" Version="12.0.0"/>
<PackageReference Include="mediatr" Version="13.0.0"/>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.7"/>
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.7"/>
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.7"/>
<PackageReference Include="Microsoft.Extensions.Options" Version="9.0.7"/>
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.7"/>
<PackageReference Include="NetDevPack" Version="8.0.2"/>
<PackageReference Include="FluentValidation"/>
<PackageReference Include="mediatr"/>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
<PackageReference Include="Microsoft.Extensions.Options" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" />
<PackageReference Include="NetDevPack"/>
</ItemGroup>

</Project>

Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
using DevStore.WebAPI.Core.DatabaseFlavor;
using DevStore.Infra.Core.DatabaseFlavor;
using HealthChecks.UI.Client;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using static DevStore.WebAPI.Core.DatabaseFlavor.ProviderConfiguration;
using static DevStore.Infra.Core.DatabaseFlavor.ProviderConfiguration;

namespace DevStore.WebAPI.Core.Configuration;
namespace DevStore.Infra.Core.Configuration;

public static class GenericHealthCheck
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;

namespace DevStore.WebAPI.Core.DatabaseFlavor;
namespace DevStore.Infra.Core.DatabaseFlavor;

/// <summary>
/// SqlServer configuration
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace DevStore.WebAPI.Core.DatabaseFlavor;
namespace DevStore.Infra.Core.DatabaseFlavor;

public enum DatabaseType
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,37 +1,29 @@
using System;
using System.Reflection;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

namespace DevStore.WebAPI.Core.DatabaseFlavor;
namespace DevStore.Infra.Core.DatabaseFlavor;

public class ProviderConfiguration
public class ProviderConfiguration(string connString)
{
private static readonly string MigrationAssembly =
typeof(ProviderConfiguration).GetTypeInfo().Assembly.GetName().Name;

private readonly string _connectionString;

public ProviderConfiguration(string connString)
{
_connectionString = connString;
}
typeof(ProviderConfiguration).GetTypeInfo().Assembly.GetName().Name!;

public Action<DbContextOptionsBuilder> SqlServer =>
options => options.UseSqlServer(_connectionString, sql => sql.MigrationsAssembly(MigrationAssembly));
options => options.UseSqlServer(connString, sql => sql.MigrationsAssembly(MigrationAssembly));

public Action<DbContextOptionsBuilder> MySql =>
options => options.UseMySQL(_connectionString, sql => sql.MigrationsAssembly(MigrationAssembly));
options => options.UseMySQL(connString, sql => sql.MigrationsAssembly(MigrationAssembly));

public Action<DbContextOptionsBuilder> Postgre =>
options =>
{
options.UseNpgsql(_connectionString, sql => sql.MigrationsAssembly(MigrationAssembly));
options.UseNpgsql(connString, sql => sql.MigrationsAssembly(MigrationAssembly));
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
};

public Action<DbContextOptionsBuilder> Sqlite =>
options => options.UseSqlite(_connectionString, sql => sql.MigrationsAssembly(MigrationAssembly));
options => options.UseSqlite(connString, sql => sql.MigrationsAssembly(MigrationAssembly));

public ProviderConfiguration With()
{
Expand All @@ -43,15 +35,13 @@ public static ProviderConfiguration Build(string connString)
return new ProviderConfiguration(connString);
}


/// <summary>
/// it's just a tuple. Returns 2 parameters.
/// Trying to improve readability at ConfigureServices
/// Improve readability at ConfigureServices
/// </summary>
public static (DatabaseType, string) DetectDatabase(IConfiguration configuration)
{
return (
configuration.GetValue("AppSettings:DatabaseType", DatabaseType.None),
configuration.GetConnectionString("DefaultConnection"));
configuration.GetConnectionString("DefaultConnection"))!;
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using static DevStore.WebAPI.Core.DatabaseFlavor.ProviderConfiguration;
using static DevStore.Infra.Core.DatabaseFlavor.ProviderConfiguration;

namespace DevStore.WebAPI.Core.DatabaseFlavor;
namespace DevStore.Infra.Core.DatabaseFlavor;

public static class ProviderSelector
{
Expand Down
30 changes: 30 additions & 0 deletions src/building-blocks/DevStore.Infra.Core/DevStore.Infra.Core.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>

<ItemGroup Label="Databases">
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite"/>
</ItemGroup>

<ItemGroup Label="HealthCheck">
<PackageReference Include="AspNetCore.HealthChecks.MySql"/>
<PackageReference Include="AspNetCore.HealthChecks.NpgSql"/>
<PackageReference Include="AspNetCore.HealthChecks.Rabbitmq"/>
<PackageReference Include="AspNetCore.HealthChecks.Sqlite"/>
<PackageReference Include="AspNetCore.HealthChecks.SqlServer"/>
<PackageReference Include="AspNetCore.HealthChecks.UI.Client"/>
</ItemGroup>

<ItemGroup>
<PackageReference Include="MySql.EntityFrameworkCore"/>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational"/>
</ItemGroup>
</Project>

Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using DevStore.WebAPI.Core.DatabaseFlavor;
using DevStore.Infra.Core.Configuration;
using DevStore.Infra.Core.DatabaseFlavor;
using DevStore.WebAPI.Core.Identity;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
Expand All @@ -7,7 +8,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;
using static DevStore.WebAPI.Core.DatabaseFlavor.ProviderConfiguration;
using static DevStore.Infra.Core.DatabaseFlavor.ProviderConfiguration;

namespace DevStore.WebAPI.Core.Configuration;

Expand All @@ -19,7 +20,7 @@ public static void AddLogger(this IServiceCollection services, IConfiguration co
.ReadFrom.Configuration(configuration)
.CreateLogger());
}

public static IServiceCollection AddApiCoreConfiguration(this IServiceCollection services,
IConfiguration configuration)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ public static async Task WaitForTable<T>(DbContext context) where T : class
}

// after a few attemps we give up
throw new DatabaseNotFoundException("Error waiting for database. Check ConnectionString and ensure database exists");
throw new DatabaseNotFoundException(
"Error waiting for database. Check ConnectionString and ensure database exists");
}

private static bool CanConnect(DbContext context)
Expand Down
Binary file not shown.
Binary file modified src/services/DevStore.Billing.API/DevStore.Billing.API.csproj
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Bogus" Version="35.6.3"/>
<PackageReference Include="FluentValidation" Version="12.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.7" />
<PackageReference Include="NetDevPack" Version="8.0.2" />
<PackageReference Include="Bogus"/>
<PackageReference Include="FluentValidation"/>
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
<PackageReference Include="NetDevPack"/>
</ItemGroup>

</Project>

Binary file modified src/services/DevStore.Catalog.API/DevStore.Catalog.API.csproj
Binary file not shown.
2 changes: 1 addition & 1 deletion src/services/DevStore.Catalog.API/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@

namespace DevStore.Catalog.API
{
public partial class Program;
public class Program;
}
Binary file modified src/services/DevStore.Customers.API/Configuration/ApiConfig.cs
Binary file not shown.
Binary file modified src/services/DevStore.Customers.API/DevStore.Customers.API.csproj
Binary file not shown.
Binary file modified src/services/DevStore.Identity.API/Configuration/ApiConfig.cs
Binary file not shown.
Binary file not shown.
Binary file modified src/services/DevStore.Identity.API/DevStore.Identity.API.csproj
Binary file not shown.
Binary file modified src/services/DevStore.Orders.API/DevStore.Orders.API.csproj
Binary file not shown.
Binary file modified src/services/DevStore.Orders.Domain/DevStore.Orders.Domain.csproj
Binary file not shown.
Binary file modified src/services/DevStore.Orders.Infra/DevStore.Orders.Infra.csproj
Binary file not shown.
Loading
Loading