Browse Source

Add `MongoDBConnectionStringChecker`.

pull/15360/head
maliming 4 years ago
parent
commit
691b28eadb
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 2
      framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpConnectionStringCheckResult.cs
  2. 16
      framework/src/Volo.Abp.Data/Volo/Abp/Data/DefaultConnectionStringChecker.cs
  3. 4
      framework/src/Volo.Abp.Data/Volo/Abp/Data/IConnectionStringChecker.cs
  4. 5
      framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/MySqlConnectionStringChecker.cs
  5. 5
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/ConnectionStrings/OracleDevartConnectionStringChecker.cs
  6. 5
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/ConnectionStrings/OracleConnectionStringChecker.cs
  7. 5
      framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/ConnectionStrings/NpgsqlConnectionStringChecker.cs
  8. 5
      framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/ConnectionStrings/SqlServerConnectionStringChecker.cs
  9. 5
      framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/ConnectionStrings/SqliteConnectionStringChecker.cs
  10. 30
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/ConnectionStrings/MongoDBConnectionStringChecker.cs
  11. 3
      framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpConnectionStringChecker_Tests.cs

2
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpConnectionStringCheckResult.cs → framework/src/Volo.Abp.Data/Volo/Abp/Data/AbpConnectionStringCheckResult.cs

@ -1,4 +1,4 @@
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.Data;
public class AbpConnectionStringCheckResult public class AbpConnectionStringCheckResult
{ {

16
framework/src/Volo.Abp.Data/Volo/Abp/Data/DefaultConnectionStringChecker.cs

@ -0,0 +1,16 @@
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Data;
public class DefaultConnectionStringChecker : IConnectionStringChecker, ITransientDependency
{
public Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString)
{
return Task.FromResult(new AbpConnectionStringCheckResult
{
Connected = false,
DatabaseExists = false
});
}
}

4
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ConnectionStrings/IAbpConnectionStringChecker.cs → framework/src/Volo.Abp.Data/Volo/Abp/Data/IConnectionStringChecker.cs

@ -1,8 +1,8 @@
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.Data;
public interface IAbpConnectionStringChecker public interface IConnectionStringChecker
{ {
Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString); Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString);
} }

5
framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpEfCoreMySqlConnectionStringChecker.cs → framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/MySqlConnectionStringChecker.cs

@ -1,12 +1,13 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using MySqlConnector; using MySqlConnector;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings;
[ExposeServices(typeof(IAbpConnectionStringChecker))] [Dependency(ReplaceServices = true)]
public class AbpEfCoreMySqlConnectionStringChecker : IAbpConnectionStringChecker, ITransientDependency public class MySqlConnectionStringChecker : IConnectionStringChecker, ITransientDependency
{ {
public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString) public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString)
{ {

5
framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpEfCoreOracleDevartConnectionStringChecker.cs → framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/ConnectionStrings/OracleDevartConnectionStringChecker.cs

@ -1,12 +1,13 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Devart.Data.Oracle; using Devart.Data.Oracle;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings;
[ExposeServices(typeof(IAbpConnectionStringChecker))] [Dependency(ReplaceServices = true)]
public class AbpEfCoreOracleDevartConnectionStringChecker : IAbpConnectionStringChecker, ITransientDependency public class OracleDevartConnectionStringChecker : IConnectionStringChecker, ITransientDependency
{ {
public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString) public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString)
{ {

5
framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpEfCoreOracleConnectionStringChecker.cs → framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/ConnectionStrings/OracleConnectionStringChecker.cs

@ -1,12 +1,13 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client; using Oracle.ManagedDataAccess.Client;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings;
[ExposeServices(typeof(IAbpConnectionStringChecker))] [Dependency(ReplaceServices = true)]
public class AbpEfCoreOracleConnectionStringChecker : IAbpConnectionStringChecker, ITransientDependency public class OracleConnectionStringChecker : IConnectionStringChecker, ITransientDependency
{ {
public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString) public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString)
{ {

5
framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpEfCoreNpgsqlConnectionStringChecker.cs → framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/ConnectionStrings/NpgsqlConnectionStringChecker.cs

@ -1,12 +1,13 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Npgsql; using Npgsql;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings;
[ExposeServices(typeof(IAbpConnectionStringChecker))] [Dependency(ReplaceServices = true)]
public class AbpEfCoreNpgsqlConnectionStringChecker : IAbpConnectionStringChecker, ITransientDependency public class NpgsqlConnectionStringChecker : IConnectionStringChecker, ITransientDependency
{ {
public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString) public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString)
{ {

5
framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpEfCoreSqlServerConnectionStringChecker.cs → framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/ConnectionStrings/SqlServerConnectionStringChecker.cs

@ -1,12 +1,13 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Data.SqlClient; using Microsoft.Data.SqlClient;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings;
[ExposeServices(typeof(IAbpConnectionStringChecker))] [Dependency(ReplaceServices = true)]
public class AbpEfCoreSqlServerConnectionStringChecker : IAbpConnectionStringChecker, ITransientDependency public class SqlServerConnectionStringChecker : IConnectionStringChecker, ITransientDependency
{ {
public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString) public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString)
{ {

5
framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpEfCoreSqliteConnectionStringChecker.cs → framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/ConnectionStrings/SqliteConnectionStringChecker.cs

@ -1,12 +1,13 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Data.Sqlite; using Microsoft.Data.Sqlite;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings;
[ExposeServices(typeof(IAbpConnectionStringChecker))] [Dependency(ReplaceServices = true)]
public class AbpEfCoreSqliteConnectionStringChecker : IAbpConnectionStringChecker, ITransientDependency public class SqliteConnectionStringChecker : IConnectionStringChecker, ITransientDependency
{ {
public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString) public virtual async Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString)
{ {

30
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/ConnectionStrings/MongoDBConnectionStringChecker.cs

@ -0,0 +1,30 @@
using System;
using System.Threading.Tasks;
using MongoDB.Driver;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.MongoDB.ConnectionStrings;
[Dependency(ReplaceServices = true)]
public class MongoDBConnectionStringChecker : IConnectionStringChecker, ITransientDependency
{
public virtual Task<AbpConnectionStringCheckResult> CheckAsync(string connectionString)
{
try
{
var mongoUrl = MongoUrl.Create(connectionString);
var client = new MongoClient(mongoUrl);
client.GetDatabase(mongoUrl.DatabaseName);
return Task.FromResult(new AbpConnectionStringCheckResult()
{
Connected = true,
DatabaseExists = true
});
}
catch (Exception e)
{
return Task.FromResult(new AbpConnectionStringCheckResult());
}
}
}

3
framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/ConnectionStrings/AbpConnectionStringChecker_Tests.cs

@ -1,5 +1,6 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Shouldly; using Shouldly;
using Volo.Abp.Data;
using Xunit; using Xunit;
namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings; namespace Volo.Abp.EntityFrameworkCore.ConnectionStrings;
@ -9,7 +10,7 @@ public class AbpConnectionStringChecker_Tests : EntityFrameworkCoreTestBase
[Fact] [Fact]
public async Task IsValidAsync() public async Task IsValidAsync()
{ {
var connectionStringChecker = GetRequiredService<IAbpConnectionStringChecker>(); var connectionStringChecker = GetRequiredService<IConnectionStringChecker>();
var result = await connectionStringChecker.CheckAsync(@"Data Source=:memory:"); var result = await connectionStringChecker.CheckAsync(@"Data Source=:memory:");
result.Connected.ShouldBeTrue(); result.Connected.ShouldBeTrue();
result.DatabaseExists.ShouldBeTrue(); result.DatabaseExists.ShouldBeTrue();

Loading…
Cancel
Save