mirror of https://github.com/abpframework/abp.git
25 changed files with 174 additions and 91 deletions
@ -0,0 +1,31 @@ |
|||
using System; |
|||
|
|||
namespace Volo.Abp.BlobStoring.Database |
|||
{ |
|||
public static class DatabaseBlobContainerConfigurationExtensions |
|||
{ |
|||
public static DatabaseBlobProviderConfiguration GetDatabaseConfiguration( |
|||
this BlobContainerConfiguration containerConfiguration) |
|||
{ |
|||
return new DatabaseBlobProviderConfiguration(containerConfiguration); |
|||
} |
|||
|
|||
public static BlobContainerConfiguration UseDatabase( |
|||
this BlobContainerConfiguration containerConfiguration, |
|||
Action<DatabaseBlobProviderConfiguration> fileSystemConfigureAction) |
|||
{ |
|||
containerConfiguration.ProviderType = typeof(DatabaseBlobProvider); |
|||
|
|||
fileSystemConfigureAction(new DatabaseBlobProviderConfiguration(containerConfiguration)); |
|||
|
|||
return containerConfiguration; |
|||
} |
|||
|
|||
public static BlobContainerConfiguration UseDatabase(this BlobContainerConfiguration containerConfiguration) |
|||
{ |
|||
containerConfiguration.ProviderType = typeof(DatabaseBlobProvider); |
|||
|
|||
return containerConfiguration; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,12 @@ |
|||
namespace Volo.Abp.BlobStoring.Database |
|||
{ |
|||
public class DatabaseBlobProviderConfiguration |
|||
{ |
|||
private readonly BlobContainerConfiguration _containerConfiguration; |
|||
|
|||
public DatabaseBlobProviderConfiguration(BlobContainerConfiguration containerConfiguration) |
|||
{ |
|||
_containerConfiguration = containerConfiguration; |
|||
} |
|||
} |
|||
} |
|||
@ -1,27 +0,0 @@ |
|||
using System; |
|||
using System.Threading; |
|||
using System.Threading.Tasks; |
|||
using MongoDB.Driver; |
|||
using MongoDB.Driver.Linq; |
|||
using Volo.Abp.Domain.Repositories.MongoDB; |
|||
using Volo.Abp.MongoDB; |
|||
|
|||
namespace Volo.Abp.BlobStoring.Database.MongoDB |
|||
{ |
|||
public class MongoContainerRepository : MongoDbRepository<IBlobStoringDatabaseMongoDbContext, Container, Guid>, IContainerRepository |
|||
{ |
|||
public MongoContainerRepository(IMongoDbContextProvider<IBlobStoringDatabaseMongoDbContext> dbContextProvider) : base(dbContextProvider) |
|||
{ |
|||
} |
|||
|
|||
public virtual async Task<Container> GetContainerAsync(string name, CancellationToken cancellationToken = default) |
|||
{ |
|||
return await GetMongoQueryable().Where(x => x.Name == name).FirstAsync(GetCancellationToken(cancellationToken)); |
|||
} |
|||
|
|||
public virtual async Task<Container> FindContainerAsync(string name, CancellationToken cancellationToken = default) |
|||
{ |
|||
return await GetMongoQueryable().Where(x => x.Name == name).FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
using System; |
|||
using System.Threading; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Domain.Repositories.MongoDB; |
|||
using Volo.Abp.MongoDB; |
|||
|
|||
namespace Volo.Abp.BlobStoring.Database.MongoDB |
|||
{ |
|||
public class MongoDbContainerRepository : MongoDbRepository<IBlobStoringDatabaseMongoDbContext, Container, Guid>, IContainerRepository |
|||
{ |
|||
public MongoDbContainerRepository(IMongoDbContextProvider<IBlobStoringDatabaseMongoDbContext> dbContextProvider) : base(dbContextProvider) |
|||
{ |
|||
} |
|||
|
|||
public virtual async Task<Container> CreateIfNotExistAsync(string name, Guid? tenantId = null, CancellationToken cancellationToken = default) |
|||
{ |
|||
var container = await FindAsync(name, tenantId, cancellationToken); |
|||
|
|||
if (container != null) |
|||
{ |
|||
return container; |
|||
} |
|||
|
|||
container = new Container(Guid.NewGuid(), name, tenantId); |
|||
await InsertAsync(container, true, GetCancellationToken(cancellationToken)); |
|||
|
|||
return container; |
|||
} |
|||
|
|||
public virtual async Task<Container> FindAsync(string name, Guid? tenantId = null, CancellationToken cancellationToken = default) |
|||
{ |
|||
return await base.FindAsync(x => x.Name == name, cancellationToken: GetCancellationToken(cancellationToken)); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
using Volo.Abp.BlobStoring.Database.EntityFrameworkCore; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.Abp.BlobStoring.Database |
|||
{ |
|||
[DependsOn( |
|||
typeof(BlobStoringDatabaseEntityFrameworkCoreTestModule) |
|||
)] |
|||
public class BlobStoringDatabaseDomainTestModule : AbpModule |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -1,17 +0,0 @@ |
|||
using Volo.Abp.BlobStoring.Database.EntityFrameworkCore; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.Abp.BlobStoring.Database |
|||
{ |
|||
/* Domain tests are configured to use the EF Core provider. |
|||
* You can switch to MongoDB, however your domain tests should be |
|||
* database independent anyway. |
|||
*/ |
|||
[DependsOn( |
|||
typeof(DatabaseEntityFrameworkCoreTestModule) |
|||
)] |
|||
public class DatabaseDomainTestModule : AbpModule |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore |
|||
{ |
|||
public abstract class BlobStoringDatabaseEntityFrameworkCoreTestBase : BlobStoringDatabaseTestBase<BlobStoringDatabaseEntityFrameworkCoreTestModule> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
4
modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/DatabaseEntityFrameworkCoreTestModule.cs → modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs
4
modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/DatabaseEntityFrameworkCoreTestModule.cs → modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs
@ -1,10 +0,0 @@ |
|||
namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore |
|||
{ |
|||
/* This class can be used as a base class for EF Core integration tests, |
|||
* while SampleRepository_Tests uses a different approach. |
|||
*/ |
|||
public abstract class DatabaseEntityFrameworkCoreTestBase : DatabaseTestBase<DatabaseEntityFrameworkCoreTestModule> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore |
|||
{ |
|||
public class EfCoreContainer_Test : BlobStoringDatabaseTestBase<BlobStoringDatabaseEntityFrameworkCoreTestModule> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
namespace Volo.Abp.BlobStoring.Database.MongoDB |
|||
{ |
|||
public abstract class BlobStoringDatabaseMongoDbTestBase : BlobStoringDatabaseTestBase<BlobStoringDatabaseMongoDbTestModule> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -1,10 +0,0 @@ |
|||
namespace Volo.Abp.BlobStoring.Database.MongoDB |
|||
{ |
|||
/* This class can be used as a base class for MongoDB integration tests, |
|||
* while SampleRepository_Tests uses a different approach. |
|||
*/ |
|||
public abstract class DatabaseMongoDbTestBase : DatabaseTestBase<DatabaseMongoDbTestModule> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
namespace Volo.Abp.BlobStoring.Database.MongoDB |
|||
{ |
|||
public class MongoDbContainer_Test : BlobStoringDatabaseTestBase<BlobStoringDatabaseMongoDbTestModule> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
Loading…
Reference in new issue