mirror of
https://github.com/Govor-team/Govor.git
synced 2026-07-22 12:14:56 +00:00
2cb6a93060
Introduces repositories, validators, and integration tests for private chats. Refactors group-related models to support invitations and memberships, updates group repository interfaces and implementations, and enhances message service logic to handle private chat creation and retrieval. Also registers new services and validators in DI, and updates related tests.
107 lines
4.5 KiB
C#
107 lines
4.5 KiB
C#
using Govor.API.Services.AdminsStuff.Interfaces;
|
|
using Govor.API.Services.Authentication.Interfaces;
|
|
using Govor.Application.Infrastructure.Extensions;
|
|
using Govor.Application.Infrastructure.Validators;
|
|
using Govor.Application.Interfaces;
|
|
using Govor.Application.Interfaces.AdminsStuff;
|
|
using Govor.Application.Interfaces.Authentication;
|
|
using Govor.Application.Interfaces.Infrastructure.Extensions;
|
|
using Govor.Application.Interfaces.Messages;
|
|
using Govor.Application.Services;
|
|
using Govor.Core.Infrastructure.Extensions;
|
|
using Govor.Core.Infrastructure.Validators;
|
|
using Govor.Core.Models;
|
|
using Govor.Core.Repositories.Admins;
|
|
using Govor.Core.Repositories.Friendships;
|
|
using Govor.Core.Repositories.Groups;
|
|
using Govor.Core.Repositories.Invaites;
|
|
using Govor.Core.Repositories.MediasAttachments;
|
|
using Govor.Core.Repositories.Messages;
|
|
using Govor.Core.Repositories.PrivateChats;
|
|
using Govor.Core.Repositories.Users;
|
|
using Govor.Data;
|
|
using Govor.Data.Repositories;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Govor.API.Extensions;
|
|
|
|
public static class ConfigurationProgramExtensions
|
|
{
|
|
public static void AddServices(this IServiceCollection services)
|
|
{
|
|
services.AddScoped<IPasswordHasher, PasswordHasher>();
|
|
services.AddScoped<IJwtService, JwtService>();
|
|
services.AddScoped<IAccountService, AuthService>();
|
|
services.AddScoped<IUsersAdministration, UsersService>();
|
|
services.AddScoped<IInvitesService, InvitesService>();
|
|
services.AddScoped<IInvitationGenerator, InvitationGenerator>();
|
|
services.AddScoped<IUsernameValidator, UsernameValidator>();
|
|
services.AddScoped<IFriendsService, FriendsService>();
|
|
|
|
services.AddScoped<IStorageService>(sp =>
|
|
{
|
|
var env = sp.GetRequiredService<IWebHostEnvironment>();
|
|
return new LocalStorageService(env.ContentRootPath);
|
|
});
|
|
|
|
services.AddHttpContextAccessor(); // it's very important for CurrentUserService
|
|
services.AddScoped<ICurrentUserService, CurrentUserService>();
|
|
|
|
services.AddMemoryCache();
|
|
services.AddScoped<IPingHandlerService, PingHandlerService>();
|
|
|
|
services.AddScoped<IMessageService, MessageService>();
|
|
services.AddScoped<IVerifyFriendship, VerifyFriendship>();
|
|
}
|
|
|
|
public static void AddRepositories(this IServiceCollection services)
|
|
{
|
|
services.AddScoped<IUsersRepository, UsersRepository>();
|
|
services.AddScoped<IMessagesRepository, MessagesRepository>();
|
|
services.AddScoped<IInvitesRepository, InvitesRepository>();
|
|
services.AddScoped<IAdminsRepository, AdminsRepository>();
|
|
services.AddScoped<IMediaAttachmentsRepository, MediaAttachmentsRepository>();
|
|
services.AddScoped<IFriendshipsRepository, FriendshipsRepository>();
|
|
services.AddScoped<IPrivateChatsRepository, PrivateChatsRepository>();
|
|
services.AddScoped<IGroupsRepository, GroupRepository>();
|
|
}
|
|
|
|
public static void AddValidators(this IServiceCollection services)
|
|
{
|
|
services.AddScoped<IObjectValidator<User>, UserValidator>();
|
|
services.AddScoped<IObjectValidator<Message>, MessageValidator>();
|
|
services.AddScoped<IObjectValidator<MediaAttachments>, MediaAttachmentsValidator>();
|
|
services.AddScoped<IObjectValidator<Admin>, AdminValidator>();
|
|
services.AddScoped<IObjectValidator<Invitation>, InvitationValidator>();
|
|
services.AddScoped<IObjectValidator<Friendship>, FriendshipValidator>();
|
|
services.AddScoped<IObjectValidator<PrivateChat>, PrivateChatValidator>();
|
|
}
|
|
|
|
public static void AddGovorDbContext(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
var useMySql = configuration.GetValue<bool>("UseMySql");
|
|
|
|
if (useMySql)
|
|
{
|
|
services.AddDbContext<GovorDbContext>(options =>
|
|
{
|
|
options
|
|
.UseMySql(
|
|
configuration.GetConnectionString(nameof(GovorDbContext)),
|
|
new MySqlServerVersion(new Version(8, 0, 21))
|
|
);
|
|
options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
|
});
|
|
}
|
|
else
|
|
{
|
|
services.AddDbContext<GovorDbContext>(options =>
|
|
{
|
|
options.UseNpgsql(configuration.GetConnectionString(nameof(GovorDbContext)));
|
|
options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
} |