mirror of
https://github.com/bitwarden/server
synced 2025-12-16 00:03:54 +00:00
* PM-13236 PasswordHealthReportApplications db * PM-13236 incorporated pr comments * PM-13236 fixed error in SQL script * PM-13236 resolve quality scan errors SQL71006, SQL7101, SQL70001 * PM-13236 fixed warnings on procedures * PM-13236 added efMigrations * PM-13236 renamed files to PasswordHealthReportApplication (singular) * PM-13236 changed file name to more appropriate naming * PM-13236 changed the file name singular * PM-13236 PasswordHealthReportApplication Entities and Repos * PM-13236 moved files under tools from core * PM-13236 Entity PasswordHealthReportApplication namespace changed to tools/entities * PM-13236 moved Repos and Interfaces to tools * PM-13236 migrated model to tools namespace * PM-13236 minor fixes to the unit tests * PM-13236 fixed script errors during build * PM-13236 Script to drop PasswordHealthReportApplications if it exists * PM-13236 fixes to database snapshot * PM-13236 updated databasesnapshots * PM-13236 Update database model changes for Mysql * PM-13236 update model changes for Sqlite * PM-13236 updated the models to remove commented code * PM-13236 added correct db snapshot for MySql * PM-13236 updated database snapshot for Postgres * PM-13236 updated database snapshot for Sqlite * PM-13236 removed unwanted directive to fix linting error * PM-13236 removed redundant script files * PM-13237 Add entity command and unit tests * PM-13237 Get query added with unit tests * PM-13237 Controller to add/get PasswordHealthReportApplication * PM-13237 Setup dependencies in the EF Service collection extensions * PM-13237 Added unit tests for ReportsController
106 lines
5.7 KiB
C#
106 lines
5.7 KiB
C#
using Bit.Core.AdminConsole.Repositories;
|
|
using Bit.Core.Auth.Repositories;
|
|
using Bit.Core.Billing.Repositories;
|
|
using Bit.Core.Enums;
|
|
using Bit.Core.NotificationCenter.Repositories;
|
|
using Bit.Core.Repositories;
|
|
using Bit.Core.SecretsManager.Repositories;
|
|
using Bit.Core.Tools.Repositories;
|
|
using Bit.Core.Vault.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.AdminConsole.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Auth.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Billing.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.NotificationCenter.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.SecretsManager.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Tools.Repositories;
|
|
using Bit.Infrastructure.EntityFramework.Vault.Repositories;
|
|
using LinqToDB.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace Bit.Infrastructure.EntityFramework;
|
|
|
|
public static class EntityFrameworkServiceCollectionExtensions
|
|
{
|
|
public static void SetupEntityFramework(this IServiceCollection services, string connectionString, SupportedDatabaseProviders provider)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(connectionString))
|
|
{
|
|
throw new Exception($"Database provider type {provider} was selected but no connection string was found.");
|
|
}
|
|
|
|
// TODO: We should move away from using LINQ syntax for EF (TDL-48).
|
|
LinqToDBForEFTools.Initialize();
|
|
|
|
services.AddAutoMapper(typeof(UserRepository));
|
|
services.AddDbContext<DatabaseContext>(options =>
|
|
{
|
|
if (provider == SupportedDatabaseProviders.Postgres)
|
|
{
|
|
options.UseNpgsql(connectionString, b => b.MigrationsAssembly("PostgresMigrations"));
|
|
// Handle NpgSql Legacy Support for `timestamp without timezone` issue
|
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
|
}
|
|
else if (provider == SupportedDatabaseProviders.MySql)
|
|
{
|
|
options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString),
|
|
b => b.MigrationsAssembly("MySqlMigrations"));
|
|
}
|
|
else if (provider == SupportedDatabaseProviders.Sqlite)
|
|
{
|
|
options.UseSqlite(connectionString, b => b.MigrationsAssembly("SqliteMigrations"));
|
|
}
|
|
else if (provider == SupportedDatabaseProviders.SqlServer)
|
|
{
|
|
options.UseSqlServer(connectionString);
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void AddPasswordManagerEFRepositories(this IServiceCollection services, bool selfHosted)
|
|
{
|
|
services.AddSingleton<IApiKeyRepository, ApiKeyRepository>();
|
|
services.AddSingleton<IAuthRequestRepository, AuthRequestRepository>();
|
|
services.AddSingleton<ICipherRepository, CipherRepository>();
|
|
services.AddSingleton<ICollectionCipherRepository, CollectionCipherRepository>();
|
|
services.AddSingleton<ICollectionRepository, CollectionRepository>();
|
|
services.AddSingleton<IDeviceRepository, DeviceRepository>();
|
|
services.AddSingleton<IEmergencyAccessRepository, EmergencyAccessRepository>();
|
|
services.AddSingleton<IFolderRepository, FolderRepository>();
|
|
services.AddSingleton<IGrantRepository, GrantRepository>();
|
|
services.AddSingleton<IGroupRepository, GroupRepository>();
|
|
services.AddSingleton<IInstallationRepository, InstallationRepository>();
|
|
services.AddSingleton<IMaintenanceRepository, MaintenanceRepository>();
|
|
services.AddSingleton<IOrganizationApiKeyRepository, OrganizationApiKeyRepository>();
|
|
services.AddSingleton<IOrganizationConnectionRepository, OrganizationConnectionRepository>();
|
|
services.AddSingleton<IOrganizationRepository, OrganizationRepository>();
|
|
services.AddSingleton<IOrganizationSponsorshipRepository, OrganizationSponsorshipRepository>();
|
|
services.AddSingleton<IOrganizationUserRepository, OrganizationUserRepository>();
|
|
services.AddSingleton<IPolicyRepository, PolicyRepository>();
|
|
services.AddSingleton<IProviderOrganizationRepository, ProviderOrganizationRepository>();
|
|
services.AddSingleton<IProviderRepository, ProviderRepository>();
|
|
services.AddSingleton<IProviderUserRepository, ProviderUserRepository>();
|
|
services.AddSingleton<ISendRepository, SendRepository>();
|
|
services.AddSingleton<ISsoConfigRepository, SsoConfigRepository>();
|
|
services.AddSingleton<ISsoUserRepository, SsoUserRepository>();
|
|
services.AddSingleton<ITaxRateRepository, TaxRateRepository>();
|
|
services.AddSingleton<ITransactionRepository, TransactionRepository>();
|
|
services.AddSingleton<IUserRepository, UserRepository>();
|
|
services.AddSingleton<IOrganizationDomainRepository, OrganizationDomainRepository>();
|
|
services.AddSingleton<IWebAuthnCredentialRepository, WebAuthnCredentialRepository>();
|
|
services.AddSingleton<IProviderPlanRepository, ProviderPlanRepository>();
|
|
services.AddSingleton<IProviderInvoiceItemRepository, ProviderInvoiceItemRepository>();
|
|
services.AddSingleton<INotificationRepository, NotificationRepository>();
|
|
services.AddSingleton<INotificationStatusRepository, NotificationStatusRepository>();
|
|
services
|
|
.AddSingleton<IClientOrganizationMigrationRecordRepository, ClientOrganizationMigrationRecordRepository>();
|
|
services.AddSingleton<IPasswordHealthReportApplicationRepository, PasswordHealthReportApplicationRepository>();
|
|
|
|
if (selfHosted)
|
|
{
|
|
services.AddSingleton<IEventRepository, EventRepository>();
|
|
}
|
|
}
|
|
}
|