feat:Initial commit

This commit is contained in:
elar1s
2025-09-25 22:21:41 +03:00
commit 02934b1fd9
35 changed files with 1267 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
using Microsoft.EntityFrameworkCore;
using StoreService.Database;
namespace StoreService.Extensions;
/// <summary>
/// Database related DI registrations.
/// </summary>
public static class DatabaseExtensions
{
/// <summary>
/// Registers the EF Core DbContext (PostgreSQL).
/// </summary>
public static IServiceCollection AddDatabase(this IServiceCollection services, IConfiguration configuration)
{
services.AddDbContext<ApplicationContext>(options =>
options.UseNpgsql(configuration.GetConnectionString("StoreDb")));
return services;
}
}

View File

@@ -0,0 +1,16 @@
using StoreService.Services;
namespace StoreService.Extensions;
/// <summary>
/// Domain service layer DI registrations.
/// </summary>
public static class DomainServicesExtensions
{
public static IServiceCollection AddDomainServices(this IServiceCollection services)
{
services.AddScoped<IOrderService, OrderService>();
return services;
}
}

View File

@@ -0,0 +1,24 @@
using Serilog;
namespace StoreService.Extensions;
/// <summary>
/// Logging related extensions (Serilog configuration).
/// </summary>
public static class LoggingExtensions
{
/// <summary>
/// Adds Serilog configuration for the host using appsettings.json (Serilog section).
/// </summary>
public static IHostBuilder AddSerilogLogging(this IHostBuilder hostBuilder)
{
hostBuilder.UseSerilog((ctx, services, cfg) =>
{
cfg.ReadFrom.Configuration(ctx.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext();
});
return hostBuilder;
}
}

View File

@@ -0,0 +1,18 @@
using StoreService.Repositories;
namespace StoreService.Extensions;
/// <summary>
/// Repository & UnitOfWork registrations.
/// </summary>
public static class RepositoryExtensions
{
public static IServiceCollection AddRepositories(this IServiceCollection services)
{
// Open generic registration for repositories
services.AddScoped(typeof(IGenericRepository<>), typeof(GenericRepository<>));
// Unit of work (will receive repositories via constructor injection)
services.AddScoped<IUnitOfWork, UnitOfWork>();
return services;
}
}