Skip to content

Commit

Permalink
restructure
Browse files Browse the repository at this point in the history
  • Loading branch information
HaikAsatryan committed Jun 18, 2024
1 parent 28b2064 commit 86c493c
Show file tree
Hide file tree
Showing 22 changed files with 112 additions and 119 deletions.
136 changes: 68 additions & 68 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,70 +1,70 @@
<Project>
<ItemGroup>
<PackageVersion Include="AspNetCore.HealthChecks.Elasticsearch" Version="8.0.1" />
<PackageVersion Include="AspNetCore.HealthChecks.NpgSql" Version="8.0.1" />
<PackageVersion Include="AspNetCore.HealthChecks.Rabbitmq" Version="8.0.1" />
<PackageVersion Include="AspNetCore.HealthChecks.Prometheus.Metrics" Version="8.0.1" />
<PackageVersion Include="AspNetCore.HealthChecks.Redis" Version="8.0.1" />
<PackageVersion Include="AspNetCore.HealthChecks.UI.Client" Version="8.0.1" />
<PackageVersion Include="EFCore.NamingConventions" Version="8.0.3" />
<PackageVersion Include="FluentDateTime" Version="3.0.0" />
<PackageVersion Include="FluentValidation.AspNetCore" Version="11.3.0" />
<PackageVersion Include="Hangfire" Version="1.8.14" />
<PackageVersion Include="Hangfire.Dashboard.Basic.Authentication" Version="7.0.1" />
<PackageVersion Include="Hangfire.EntityFrameworkCore" Version="0.6.0" />
<PackageVersion Include="Hangfire.PostgreSql" Version="1.20.8" />
<PackageVersion Include="MassTransit.RabbitMQ" Version="8.2.3" />
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="8.0.6" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="8.0.6" />
<PackageVersion Include="MediatR" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageVersion Include="NetArchTest.Rules" Version="1.3.2" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.9.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.7.0-rc.1" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.9.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.9.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.GrpcNetClient" Version="1.7.0-beta.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.9.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.9.0" />
<PackageVersion Include="Otp.NET" Version="1.3.0" />
<PackageVersion Include="PandaTech.BaseConverter" Version="3.0.6" />
<PackageVersion Include="Pandatech.DistributedCache" Version="1.1.0" />
<PackageVersion Include="Pandatech.EFCore.AuditBase" Version="1.0.3" />
<PackageVersion Include="Pandatech.FluentMinimalApiMapper" Version="1.1.0" />
<PackageVersion Include="Pandatech.CommissionCalculator" Version="3.3.0" />
<PackageVersion Include="Pandatech.Communicator" Version="1.0.5" />
<PackageVersion Include="Pandatech.Crypto" Version="2.4.1" />
<PackageVersion Include="Pandatech.GridifyExtensions" Version="1.3.0" />
<PackageVersion Include="Pandatech.MassTransit.PostgresOutbox" Version="1.0.7" />
<PackageVersion Include="Pandatech.PandaVaultClient" Version="3.1.0" />
<PackageVersion Include="Pandatech.RegexBox" Version="1.2.4" />
<PackageVersion Include="Pandatech.ResponseCrafter" Version="2.0.0" />
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.1" />
<PackageVersion Include="Serilog.Enrichers.Environment" Version="3.0.0" />
<PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="10.0.0" />
<PackageVersion Include="SonarAnalyzer.CSharp" Version="9.27.0.93347">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.6.2" />
<PackageVersion Include="UAParser" Version="3.1.47" />
<PackageVersion Include="coverlet.collector" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="xunit" Version="2.8.1" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
</ItemGroup>
<ItemGroup>
<PackageVersion Include="AspNetCore.HealthChecks.Elasticsearch" Version="8.0.1"/>
<PackageVersion Include="AspNetCore.HealthChecks.NpgSql" Version="8.0.1"/>
<PackageVersion Include="AspNetCore.HealthChecks.Rabbitmq" Version="8.0.1"/>
<PackageVersion Include="AspNetCore.HealthChecks.Prometheus.Metrics" Version="8.0.1"/>
<PackageVersion Include="AspNetCore.HealthChecks.Redis" Version="8.0.1"/>
<PackageVersion Include="AspNetCore.HealthChecks.UI.Client" Version="8.0.1"/>
<PackageVersion Include="EFCore.NamingConventions" Version="8.0.3"/>
<PackageVersion Include="FluentDateTime" Version="3.0.0"/>
<PackageVersion Include="FluentValidation.AspNetCore" Version="11.3.0"/>
<PackageVersion Include="Hangfire" Version="1.8.14"/>
<PackageVersion Include="Hangfire.Dashboard.Basic.Authentication" Version="7.0.1"/>
<PackageVersion Include="Hangfire.EntityFrameworkCore" Version="0.6.0"/>
<PackageVersion Include="Hangfire.PostgreSql" Version="1.20.8"/>
<PackageVersion Include="MassTransit.RabbitMQ" Version="8.2.3"/>
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="8.0.6"/>
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="8.0.6"/>
<PackageVersion Include="MediatR"/>
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0"/>
<PackageVersion Include="NetArchTest.Rules" Version="1.3.2"/>
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4"/>
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.9.0"/>
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.7.0-rc.1"/>
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.9.0"/>
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.9.0"/>
<PackageVersion Include="OpenTelemetry.Instrumentation.GrpcNetClient" Version="1.7.0-beta.1"/>
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.9.0"/>
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.9.0"/>
<PackageVersion Include="Otp.NET" Version="1.3.0"/>
<PackageVersion Include="PandaTech.BaseConverter" Version="3.0.6"/>
<PackageVersion Include="Pandatech.DistributedCache" Version="1.1.0"/>
<PackageVersion Include="Pandatech.EFCore.AuditBase" Version="1.0.3"/>
<PackageVersion Include="Pandatech.FluentMinimalApiMapper" Version="1.1.0"/>
<PackageVersion Include="Pandatech.CommissionCalculator" Version="3.3.0"/>
<PackageVersion Include="Pandatech.Communicator" Version="1.0.5"/>
<PackageVersion Include="Pandatech.Crypto" Version="2.4.1"/>
<PackageVersion Include="Pandatech.GridifyExtensions" Version="1.3.0"/>
<PackageVersion Include="Pandatech.MassTransit.PostgresOutbox" Version="1.0.7"/>
<PackageVersion Include="Pandatech.PandaVaultClient" Version="3.1.0"/>
<PackageVersion Include="Pandatech.RegexBox" Version="1.2.4"/>
<PackageVersion Include="Pandatech.ResponseCrafter" Version="2.0.0"/>
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.1"/>
<PackageVersion Include="Serilog.Enrichers.Environment" Version="3.0.0"/>
<PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="10.0.0"/>
<PackageVersion Include="SonarAnalyzer.CSharp" Version="9.27.0.93347">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.6.2"/>
<PackageVersion Include="UAParser" Version="3.1.47"/>
<PackageVersion Include="coverlet.collector" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="xunit" Version="2.8.1"/>
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
</ItemGroup>
</Project>
1 change: 1 addition & 0 deletions src/Pandatech.CleanArchitecture.Api/AssemblyReference.cs
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
namespace Pandatech.CleanArchitecture.Api;

public class AssemblyReference;
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
using Pandatech.CleanArchitecture.Application.Features.Auth.Helpers;
using Pandatech.CleanArchitecture.Application.Features.Auth.Helpers.ApiAuth.MinimalApiExtensions;
using Pandatech.CleanArchitecture.Core.Enums;
using Pandatech.CleanArchitecture.Core.Helpers;
using ResponseCrafter.Extensions;

namespace Pandatech.CleanArchitecture.Api.Endpoints.Auth;
Expand Down Expand Up @@ -110,11 +109,12 @@ public void AddRoutes(IEndpointRouteBuilder app)
.WithDescription("This endpoint is used to update the user password when it is forced.")
.ProducesErrorResponse(400);

groupApp.MapPatch("/password/own", async (ISender sender, [FromBody]UpdateOwnPasswordCommand command, CancellationToken token) =>
{
await sender.Send(command, token);
return TypedResults.Ok();
})
groupApp.MapPatch("/password/own",
async (ISender sender, [FromBody] UpdateOwnPasswordCommand command, CancellationToken token) =>
{
await sender.Send(command, token);
return TypedResults.Ok();
})
.Authorize(UserRole.User)
.WithDescription("This endpoint is used to update the user password from its own profile.")
.ProducesErrorResponse(400);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
namespace Pandatech.CleanArchitecture.Application;

public class AssemblyReference;
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public static class DependencyInjection
public static WebApplicationBuilder AddApplicationLayer(this WebApplicationBuilder builder)
{
AssemblyRegistry.AddAssemblies(typeof(DependencyInjection).Assembly);

builder.Services.AddScoped<IRequestContext, RequestContext>();


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@ namespace Pandatech.CleanArchitecture.Application.Features.Auth.Helpers.ApiAuth.

public class AnonymousMetadata
{

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@ namespace Pandatech.CleanArchitecture.Application.Features.Auth.Helpers.ApiAuth.

public class ForcedPasswordChangeMetadata
{

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@ namespace Pandatech.CleanArchitecture.Application.Features.Auth.Helpers.ApiAuth.

public class IgnoreClientTypeMetadata
{

}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Pandatech.CleanArchitecture.Application.Features.Auth.Helpers.ApiAuth.MvcControllersAttributes;

[AttributeUsage(AttributeTargets.Method)]
public class AnonymousAttribute : Attribute;
public class AnonymousAttribute : Attribute;
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using BaseConverter.Attributes;
using Pandatech.CleanArchitecture.Core.Interfaces;

namespace Pandatech.CleanArchitecture.Application.Features.User.Application.Delete;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using BaseConverter;
using Pandatech.CleanArchitecture.Core.Enums;
using Pandatech.CleanArchitecture.Core.Interfaces;
using Pandatech.CleanArchitecture.Core.Interfaces.Repositories;
using ResponseCrafter.HttpExceptions;

namespace Pandatech.CleanArchitecture.Application.Features.User.Application.Delete;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ namespace Pandatech.CleanArchitecture.Application.Features.User.Application.GetC
public class GetUserColumnDistinctValuesQueryHandler(IUnitOfWork unitOfWork)
: IQueryHandler<GetUserColumnDistinctValuesQuery, PagedResponse<object>>
{
public Task<PagedResponse<object>> Handle(GetUserColumnDistinctValuesQuery request, CancellationToken cancellationToken)
public Task<PagedResponse<object>> Handle(GetUserColumnDistinctValuesQuery request,
CancellationToken cancellationToken)
{
return unitOfWork
return unitOfWork
.Users
.ColumnDistinctValuesAsync(request, cancellationToken: cancellationToken);
.ColumnDistinctValuesAsync(request, cancellationToken);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ public Task<PagedResponse<GetUserQueryResponse>> Handle(GetUsersQuery request, C
Role = x.Role,
Status = x.Status,
Comment = x.Comment
}, cancellationToken: cancellationToken);
}, cancellationToken);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
</ItemGroup>

<ItemGroup>
<Folder Include="Features\Auth\Application\" />
<Folder Include="Features\User\Application\" />
<Folder Include="Features\Auth\Application\"/>
<Folder Include="Features\User\Application\"/>
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public interface IBaseRepository<TEntity>
{
Task<TEntity?> GetByIdAsync(long id, CancellationToken cancellationToken = default);
Task<TEntity?> GetByIdNoTrackingAsync(long id, CancellationToken cancellationToken = default);

public Task<bool> AnyAsync(Expression<Func<TEntity, bool>> predicate);
void Add(TEntity entity);
Task AddRangeAsync(IEnumerable<TEntity> entities, CancellationToken cancellationToken = default);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
<PackageReference Include="Pandatech.CommissionCalculator"/>
<PackageReference Include="Pandatech.Communicator"/>
<PackageReference Include="Pandatech.Crypto"/>
<PackageReference Include="Pandatech.DistributedCache" />
<PackageReference Include="Pandatech.DistributedCache"/>
<PackageReference Include="Pandatech.EFCore.AuditBase"/>
<PackageReference Include="Pandatech.GridifyExtensions" />
<PackageReference Include="Pandatech.MassTransit.PostgresOutbox" />
<PackageReference Include="Pandatech.GridifyExtensions"/>
<PackageReference Include="Pandatech.MassTransit.PostgresOutbox"/>
<PackageReference Include="Pandatech.RegexBox"/>
<PackageReference Include="Pandatech.ResponseCrafter"/>
<PackageReference Include="SonarAnalyzer.CSharp">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
namespace Pandatech.CleanArchitecture.Infrastructure;

public class AssemblyReference;
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ public PostgresContext(DbContextOptions<PostgresContext> options) : base(options
this.UseAuditPropertyValidation();
}

public DbSet<OutboxMessage> OutboxMessages { get; set; }
public DbSet<InboxMessage> InboxMessages { get; set; }
public DbSet<Token> Tokens { get; set; } = null!;
public DbSet<User> Users { get; set; } = null!;
public DbSet<InboxMessage> InboxMessages { get; set; }

public DbSet<OutboxMessage> OutboxMessages { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
Expand All @@ -28,5 +29,4 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
modelBuilder.FilterOutDeletedMarkedObjects();
modelBuilder.ApplyConfigurationsFromAssembly(typeof(DependencyInjection).Assembly);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ public static WebApplicationBuilder AddMassTransit(this WebApplicationBuilder bu
{
builder.Services.AddMassTransit(x =>
{

x.AddConsumers(assemblies);
x.SetKebabCaseEndpointNameFormatter();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,16 @@ private static bool ShouldExcludeHangfireDashboardLogs(this LogEvent logEvent)
&& requestPathValue is ScalarValue requestPath
&& requestPath.Value?.ToString()?.Contains("/hangfire") == true;
}

private static bool ShouldExcludeOutboxDbCommandLogs(this LogEvent logEvent, IHostEnvironment environment)
{
if (!environment.IsLocalOrDevelopmentOrQa())
{
return false;
}

return logEvent.RenderMessage().StartsWith("Executed DbCommand") &&
(logEvent.RenderMessage().Contains("FROM outbox_messages") ||
(logEvent.RenderMessage().Contains("FROM outbox_messages") ||
logEvent.RenderMessage().Contains("FROM OutboxMessages"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public Task<PagedResponse<object>> ColumnDistinctValuesAsync(ColumnDistinctValue
public async Task<object?> AggregateAsync(AggregateQueryModel queryModel,
CancellationToken cancellationToken = default)
{
return await Context.Set<TEntity>().AggregateAsync(queryModel, cancellationToken: cancellationToken);
return await Context.Set<TEntity>().AggregateAsync(queryModel, cancellationToken);
}

public IEnumerable<MappingModel> GetFilters()
Expand Down
29 changes: 12 additions & 17 deletions tests/Pandatech.CleanArchitecture.Test/ArchitectureTests.cs
Original file line number Diff line number Diff line change
@@ -1,31 +1,30 @@
using NetArchTest.Rules;
using Pandatech.CleanArchitecture.Core;
using Xunit;

namespace Architecture.Tests;

public class ArchitectureTests
{
private static readonly string? _coreName =
typeof(Pandatech.CleanArchitecture.Core.AssemblyReference).Assembly.GetName().Name;
private static readonly string? _applicationClientName =
private static readonly string? _coreName =
typeof(AssemblyReference).Assembly.GetName().Name;

private static readonly string? _applicationClientName =
typeof(Pandatech.CleanArchitecture.Application.AssemblyReference).Assembly.GetName().Name;
private static readonly string? _infrastructureName =

private static readonly string? _infrastructureName =
typeof(Pandatech.CleanArchitecture.Infrastructure.AssemblyReference).Assembly.GetName().Name;
private static readonly string? _webApiName =

private static readonly string? _webApiName =
typeof(Pandatech.CleanArchitecture.Api.AssemblyReference).Assembly.GetName().Name;

[Fact]
public void Core_Should_Not_HaveDependency_On_OtherProjects()
{
// Arrange
var assembly = typeof(Pandatech.CleanArchitecture.Core.AssemblyReference).Assembly;
var assembly = typeof(AssemblyReference).Assembly;

var otherProjects = new[]
{
_webApiName,
_infrastructureName,
_applicationClientName,
};
var otherProjects = new[] { _webApiName, _infrastructureName, _applicationClientName };

// Act
var testResult = Types
Expand All @@ -44,11 +43,7 @@ public void Application_Should_Not_HaveDependency_On_OtherProjects()
// Arrange
var assembly = typeof(Pandatech.CleanArchitecture.Application.AssemblyReference).Assembly;

var otherProjects = new[]
{
_webApiName,
_infrastructureName,
};
var otherProjects = new[] { _webApiName, _infrastructureName };

// Act
var testResult = Types
Expand Down

0 comments on commit 86c493c

Please sign in to comment.