chore: scaffold solution with Core, Api, Worker and test projects

- HrynCo.NotificationService.Core (class library)
- HrynCo.NotificationService.Api (ASP.NET Core Web API)
- HrynCo.NotificationService.Worker (Worker Service)
- HrynCo.NotificationService.Core.Tests (xUnit)
- HrynCo.NotificationService.Api.IntegrationTests (xUnit)
- Api and Worker reference Core
- Test projects reference their respective targets

Ref: IT-628

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Anatolii Grynchuk
2026-05-01 18:54:38 +03:00
parent c9288e5578
commit 8aee35c123
20 changed files with 746 additions and 0 deletions
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>dotnet-HrynCo.NotificationService.Worker-17271b55-3aa1-4794-b843-5a1e0c70be38</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.6" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\HrynCo.NotificationService.Core\HrynCo.NotificationService.Core.csproj" />
</ItemGroup>
</Project>
@@ -0,0 +1,7 @@
using HrynCo.NotificationService.Worker;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<Worker>();
var host = builder.Build();
host.Run();
@@ -0,0 +1,12 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"HrynCo.NotificationService.Worker": {
"commandName": "Project",
"dotnetRunMessages": true,
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
}
}
}
}
@@ -0,0 +1,16 @@
namespace HrynCo.NotificationService.Worker;
public class Worker(ILogger<Worker> logger) : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
if (logger.IsEnabled(LogLevel.Information))
{
logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}
await Task.Delay(1000, stoppingToken);
}
}
}
@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}