diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo.Abp.BlobStoring.Database.Domain.Shared.csproj b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo.Abp.BlobStoring.Database.Domain.Shared.csproj
index 4178ed3659..d7f9289c12 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo.Abp.BlobStoring.Database.Domain.Shared.csproj
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo.Abp.BlobStoring.Database.Domain.Shared.csproj
@@ -13,8 +13,8 @@
-
-
+
+
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/BlobConsts.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/BlobConsts.cs
deleted file mode 100644
index f0edc35777..0000000000
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/BlobConsts.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Volo.Abp.BlobStoring.Database
-{
- public static class BlobConsts
- {
- public const int MaxNameLength = 256;
-
- public const int MaxContentLength = 2_000_000_000; // 2 GB
- }
-}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseDomainSharedModule.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseDomainSharedModule.cs
index 4dc89c9911..836c6f5a15 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseDomainSharedModule.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseDomainSharedModule.cs
@@ -17,7 +17,7 @@ namespace Volo.Abp.BlobStoring.Database
{
Configure(options =>
{
- options.FileSets.AddEmbedded("Volo.Abp.BlobStoring.Database");
+ options.FileSets.AddEmbedded();
});
Configure(options =>
@@ -25,7 +25,7 @@ namespace Volo.Abp.BlobStoring.Database
options.Resources
.Add("en")
.AddBaseTypes(typeof(AbpValidationResource))
- .AddVirtualJson("/Localization/BlobStoringDatabase");
+ .AddVirtualJson("/Volo/Abp/BlobStoring/Database/Localization");
});
Configure(options =>
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseBlobConsts.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseBlobConsts.cs
new file mode 100644
index 0000000000..c2cd33f098
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseBlobConsts.cs
@@ -0,0 +1,15 @@
+namespace Volo.Abp.BlobStoring.Database
+{
+ public static class DatabaseBlobConsts
+ {
+ ///
+ /// Default value: 256.
+ ///
+ public static int MaxNameLength { get; set; } = 256;
+
+ ///
+ /// Default value: (2GB).
+ ///
+ public static int MaxContentLength { get; set; } = int.MaxValue;
+ }
+}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/ContainerConsts.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseContainerConsts.cs
similarity index 67%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/ContainerConsts.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseContainerConsts.cs
index 383883eca6..0a71451f9f 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/ContainerConsts.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseContainerConsts.cs
@@ -1,6 +1,6 @@
namespace Volo.Abp.BlobStoring.Database
{
- public static class ContainerConsts
+ public static class DatabaseContainerConsts
{
public const int MaxNameLength = 128;
}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/cs.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/cs.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/cs.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/cs.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/en.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/en.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/en.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/en.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/pl-PL.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/pl-PL.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/pl-PL.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/pl-PL.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/pt-BR.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/pt-BR.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/pt-BR.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/pt-BR.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/sl.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/sl.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/sl.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/sl.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/tr.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/tr.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/tr.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/tr.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/vi.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/vi.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/vi.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/vi.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/zh-Hans.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/zh-Hans.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/zh-Hans.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/zh-Hans.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/zh-Hant.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/zh-Hant.json
similarity index 100%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/BlobStoringDatabase/zh-Hant.json
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/zh-Hant.json
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/Blob.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlob.cs
similarity index 74%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/Blob.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlob.cs
index 6f3e8c7806..2b089a8b21 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/Blob.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlob.cs
@@ -5,7 +5,7 @@ using Volo.Abp.MultiTenancy;
namespace Volo.Abp.BlobStoring.Database
{
- public class Blob : AggregateRoot, IMultiTenant
+ public class DatabaseBlob : AggregateRoot, IMultiTenant
{
public virtual Guid ContainerId { get; protected set; }
@@ -15,10 +15,10 @@ namespace Volo.Abp.BlobStoring.Database
public virtual byte[] Content { get; protected set; }
- public Blob(Guid id, Guid containerId, [NotNull] string name, [NotNull] byte[] content, Guid? tenantId = null)
+ public DatabaseBlob(Guid id, Guid containerId, [NotNull] string name, [NotNull] byte[] content, Guid? tenantId = null)
: base(id)
{
- Name = Check.NotNullOrWhiteSpace(name, nameof(name), BlobConsts.MaxNameLength);
+ Name = Check.NotNullOrWhiteSpace(name, nameof(name), DatabaseBlobConsts.MaxNameLength);
ContainerId = containerId;
Content = CheckContentLength(content);
TenantId = tenantId;
@@ -33,9 +33,9 @@ namespace Volo.Abp.BlobStoring.Database
{
Check.NotNull(content, nameof(content));
- if (content.Length >= BlobConsts.MaxContentLength)
+ if (content.Length >= DatabaseBlobConsts.MaxContentLength)
{
- throw new AbpException($"Blob content size cannot be more than {BlobConsts.MaxContentLength} Bytes.");
+ throw new AbpException($"Blob content size cannot be more than {DatabaseBlobConsts.MaxContentLength} Bytes.");
}
return content;
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/Container.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobContainer.cs
similarity index 63%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/Container.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobContainer.cs
index ebe8bbf20b..4342d9092c 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/Container.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobContainer.cs
@@ -5,16 +5,16 @@ using Volo.Abp.MultiTenancy;
namespace Volo.Abp.BlobStoring.Database
{
- public class Container : AggregateRoot, IMultiTenant //TODO: Rename to BlobContainer
+ public class DatabaseBlobContainer : AggregateRoot, IMultiTenant //TODO: Rename to BlobContainer
{
public virtual Guid? TenantId { get; protected set; }
public virtual string Name { get; protected set; }
- public Container(Guid id, [NotNull] string name, Guid? tenantId = null)
+ public DatabaseBlobContainer(Guid id, [NotNull] string name, Guid? tenantId = null)
: base(id)
{
- Name = Check.NotNullOrWhiteSpace(name, nameof(name), ContainerConsts.MaxNameLength);
+ Name = Check.NotNullOrWhiteSpace(name, nameof(name), DatabaseContainerConsts.MaxNameLength);
TenantId = tenantId;
}
}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobContainerConfigurationExtensions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobContainerConfigurationExtensions.cs
index c302e00634..8ac2e057f3 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobContainerConfigurationExtensions.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobContainerConfigurationExtensions.cs
@@ -1,30 +1,11 @@
-using System;
-
-namespace Volo.Abp.BlobStoring.Database
+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 databaseConfigureAction)
- {
- containerConfiguration.ProviderType = typeof(DatabaseBlobProvider);
-
- databaseConfigureAction(new DatabaseBlobProviderConfiguration(containerConfiguration));
-
- return containerConfiguration;
- }
-
- public static BlobContainerConfiguration UseDatabase(this BlobContainerConfiguration containerConfiguration)
+ this BlobContainerConfiguration containerConfiguration)
{
containerConfiguration.ProviderType = typeof(DatabaseBlobProvider);
-
return containerConfiguration;
}
}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobProvider.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobProvider.cs
index f749410429..1d5cf50593 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobProvider.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobProvider.cs
@@ -1,26 +1,34 @@
using System;
using System.IO;
+using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
+using Volo.Abp.Guids;
namespace Volo.Abp.BlobStoring.Database
{
public class DatabaseBlobProvider : BlobProviderBase, ITransientDependency
{
- protected IBlobRepository BlobRepository { get; }
- protected IContainerRepository ContainerRepository { get; }
-
- public DatabaseBlobProvider(IBlobRepository blobRepository, IContainerRepository containerRepository)
+ protected IDatabaseBlobRepository DatabaseBlobRepository { get; }
+ protected IDatabaseBlobContainerRepository DatabaseBlobContainerRepository { get; }
+ protected IGuidGenerator GuidGenerator { get; }
+
+ public DatabaseBlobProvider(
+ IDatabaseBlobRepository databaseBlobRepository,
+ IDatabaseBlobContainerRepository databaseBlobContainerRepository,
+ IGuidGenerator guidGenerator)
{
- BlobRepository = blobRepository;
- ContainerRepository = containerRepository;
+ DatabaseBlobRepository = databaseBlobRepository;
+ DatabaseBlobContainerRepository = databaseBlobContainerRepository;
+ GuidGenerator = guidGenerator;
}
public override async Task SaveAsync(BlobProviderSaveArgs args)
{
- var container = await ContainerRepository.CreateIfNotExistAsync(args.ContainerName, args.TenantId, args.CancellationToken);
-
- var blob = await BlobRepository.FindAsync(container.Id, args.BlobName, args.TenantId, args.CancellationToken);
+ var container = await GetOrCreateContainerAsync(args.ContainerName, args.TenantId, args.CancellationToken);
+
+ var blob = await DatabaseBlobRepository.FindAsync(container.Id, args.BlobName, args.TenantId,
+ args.CancellationToken);
var content = await args.BlobStream.GetAllBytesAsync(args.CancellationToken);
@@ -28,53 +36,63 @@ namespace Volo.Abp.BlobStoring.Database
{
if (!args.OverrideExisting)
{
- throw new BlobAlreadyExistsException($"Saving BLOB '{args.BlobName}' does already exists in the container '{args.ContainerName}'! Set {nameof(args.OverrideExisting)} if it should be overwritten.");
+ throw new BlobAlreadyExistsException(
+ $"Saving BLOB '{args.BlobName}' does already exists in the container '{args.ContainerName}'! Set {nameof(args.OverrideExisting)} if it should be overwritten.");
}
blob.SetContent(content);
- await BlobRepository.UpdateAsync(blob);
+ await DatabaseBlobRepository.UpdateAsync(blob);
}
else
{
- blob = new Blob(Guid.NewGuid(), container.Id, args.BlobName, content, args.TenantId);
- await BlobRepository.InsertAsync(blob);
+ blob = new DatabaseBlob(GuidGenerator.Create(), container.Id, args.BlobName, content, args.TenantId);
+ await DatabaseBlobRepository.InsertAsync(blob);
}
}
public override async Task DeleteAsync(BlobProviderDeleteArgs args)
{
- var container = await ContainerRepository.FindAsync(args.ContainerName, args.TenantId, args.CancellationToken);
+ var container =
+ await DatabaseBlobContainerRepository.FindAsync(args.ContainerName, args.TenantId,
+ args.CancellationToken);
if (container == null)
{
return false;
}
- return await BlobRepository.DeleteAsync(container.Id, args.BlobName, args.TenantId, args.CancellationToken);
+ return await DatabaseBlobRepository.DeleteAsync(container.Id, args.BlobName, args.TenantId,
+ args.CancellationToken);
}
public override async Task ExistsAsync(BlobProviderExistsArgs args)
{
- var container = await ContainerRepository.FindAsync(args.ContainerName, args.TenantId, args.CancellationToken);
+ var container =
+ await DatabaseBlobContainerRepository.FindAsync(args.ContainerName, args.TenantId,
+ args.CancellationToken);
if (container == null)
{
return false;
}
- return await BlobRepository.ExistsAsync(container.Id, args.BlobName, args.TenantId, args.CancellationToken);
+ return await DatabaseBlobRepository.ExistsAsync(container.Id, args.BlobName, args.TenantId,
+ args.CancellationToken);
}
public override async Task GetOrNullAsync(BlobProviderGetArgs args)
{
- var container = await ContainerRepository.FindAsync(args.ContainerName, args.TenantId, args.CancellationToken);
+ var container =
+ await DatabaseBlobContainerRepository.FindAsync(args.ContainerName, args.TenantId,
+ args.CancellationToken);
if (container == null)
{
return null;
}
-
- var blob = await BlobRepository.FindAsync(container.Id, args.BlobName, args.TenantId, args.CancellationToken);
+
+ var blob = await DatabaseBlobRepository.FindAsync(container.Id, args.BlobName, args.TenantId,
+ args.CancellationToken);
if (blob == null)
{
@@ -83,5 +101,22 @@ namespace Volo.Abp.BlobStoring.Database
return new MemoryStream(blob.Content);
}
+
+ protected virtual async Task GetOrCreateContainerAsync(
+ string name,
+ Guid? tenantId = null,
+ CancellationToken cancellationToken = default)
+ {
+ var container = await DatabaseBlobContainerRepository.FindAsync(name, tenantId, cancellationToken);
+ if (container != null)
+ {
+ return container;
+ }
+
+ container = new DatabaseBlobContainer(GuidGenerator.Create(), name, tenantId);
+ await DatabaseBlobContainerRepository.InsertAsync(container, cancellationToken: cancellationToken);
+
+ return container;
+ }
}
}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobProviderConfiguration.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobProviderConfiguration.cs
deleted file mode 100644
index 878c0c48c1..0000000000
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/DatabaseBlobProviderConfiguration.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Volo.Abp.BlobStoring.Database
-{
- public class DatabaseBlobProviderConfiguration
- {
- private readonly BlobContainerConfiguration _containerConfiguration;
-
- public DatabaseBlobProviderConfiguration(BlobContainerConfiguration containerConfiguration)
- {
- _containerConfiguration = containerConfiguration;
- }
- }
-}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IContainerRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IContainerRepository.cs
deleted file mode 100644
index f3358f2520..0000000000
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IContainerRepository.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-using JetBrains.Annotations;
-using Volo.Abp.Domain.Repositories;
-
-namespace Volo.Abp.BlobStoring.Database
-{
- public interface IContainerRepository : IBasicRepository
- {
- Task CreateIfNotExistAsync([NotNull] string name, Guid? tenantId = null, CancellationToken cancellationToken = default);
-
- Task FindAsync([NotNull] string name, Guid? tenantId = null, CancellationToken cancellationToken = default);
- }
-}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IDatabaseBlobContainerRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IDatabaseBlobContainerRepository.cs
new file mode 100644
index 0000000000..34d94f5832
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IDatabaseBlobContainerRepository.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using JetBrains.Annotations;
+using Volo.Abp.Domain.Repositories;
+
+namespace Volo.Abp.BlobStoring.Database
+{
+ public interface IDatabaseBlobContainerRepository : IBasicRepository
+ {
+ Task FindAsync([NotNull] string name, Guid? tenantId = null, CancellationToken cancellationToken = default);
+ }
+}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IBlobRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IDatabaseBlobRepository.cs
similarity index 67%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IBlobRepository.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IDatabaseBlobRepository.cs
index e12603c772..4f5097cae2 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IBlobRepository.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain/Volo/Abp/BlobStoring/Database/IDatabaseBlobRepository.cs
@@ -6,9 +6,9 @@ using Volo.Abp.Domain.Repositories;
namespace Volo.Abp.BlobStoring.Database
{
- public interface IBlobRepository : IBasicRepository
+ public interface IDatabaseBlobRepository : IBasicRepository
{
- Task FindAsync(Guid containerId, [NotNull] string name, Guid? tenantId = null, CancellationToken cancellationToken = default);
+ Task FindAsync(Guid containerId, [NotNull] string name, Guid? tenantId = null, CancellationToken cancellationToken = default);
Task ExistsAsync(Guid containerId, [NotNull] string name, Guid? tenantId = null, CancellationToken cancellationToken = default);
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseDbContextModelCreatingExtensions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseDbContextModelCreatingExtensions.cs
deleted file mode 100644
index 9a3d52c4c9..0000000000
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseDbContextModelCreatingExtensions.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using System;
-using Volo.Abp.EntityFrameworkCore.Modeling;
-
-namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
-{
- public static class BlobStoringDatabaseDbContextModelCreatingExtensions
- {
- public static void ConfigureDatabaseBlobStoring(
- this ModelBuilder builder,
- Action optionsAction = null)
- {
- Check.NotNull(builder, nameof(builder));
-
- var options = new BlobStoringDatabaseModelBuilderConfigurationOptions(
- BlobStoringDatabaseDbProperties.DbTablePrefix,
- BlobStoringDatabaseDbProperties.DbSchema
- );
-
- optionsAction?.Invoke(options);
-
- builder.Entity(b =>
- {
- b.ToTable(options.TablePrefix + "Containers", options.Schema);
-
- b.ConfigureByConvention();
-
- b.Property(p => p.Name).IsRequired().HasMaxLength(ContainerConsts.MaxNameLength);
-
- b.HasIndex(x => x.Name);
- });
-
- builder.Entity(b =>
- {
- b.ToTable(options.TablePrefix + "Blobs", options.Schema);
-
- b.ConfigureByConvention();
-
- b.Property(p => p.Name).IsRequired().HasMaxLength(BlobConsts.MaxNameLength);
- b.Property(p => p.ContainerId).IsRequired();
- b.Property(p => p.Content).HasMaxLength(BlobConsts.MaxContentLength);
-
- b.HasIndex(x => x.Name);
- });
- }
- }
-}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreModule.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreModule.cs
index 7e2d00521e..26e8a5f024 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreModule.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreModule.cs
@@ -12,11 +12,11 @@ namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- context.Services.AddAbpDbContext(options =>
+ context.Services.AddAbpDbContext(options =>
{
- options.AddRepository();
+ options.AddRepository();
- options.AddRepository();
+ options.AddRepository();
});
}
}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseDbContext.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContext.cs
similarity index 53%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseDbContext.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContext.cs
index 13b5c12429..00780c628b 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseDbContext.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContext.cs
@@ -5,13 +5,13 @@ using Volo.Abp.EntityFrameworkCore;
namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
{
[ConnectionStringName(BlobStoringDatabaseDbProperties.ConnectionStringName)]
- public class BlobStoringDatabaseDbContext : AbpDbContext, IBlobStoringDatabaseDbContext
+ public class BlobStoringDbContext : AbpDbContext, IBlobStoringDbContext
{
- public DbSet Containers { get; set; }
+ public DbSet BlobContainers { get; set; }
- public DbSet Blobs { get; set; }
+ public DbSet Blobs { get; set; }
- public BlobStoringDatabaseDbContext(DbContextOptions options)
+ public BlobStoringDbContext(DbContextOptions options)
: base(options)
{
@@ -21,8 +21,7 @@ namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
{
base.OnModelCreating(builder);
- builder.ConfigureDatabaseBlobStoring();
+ builder.ConfigureBlobStoring();
}
-
}
}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContextModelCreatingExtensions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContextModelCreatingExtensions.cs
new file mode 100644
index 0000000000..9514617779
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContextModelCreatingExtensions.cs
@@ -0,0 +1,47 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+
+namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
+{
+ public static class BlobStoringDbContextModelCreatingExtensions
+ {
+ public static void ConfigureBlobStoring(
+ this ModelBuilder builder,
+ Action optionsAction = null)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ var options = new BlobStoringModelBuilderConfigurationOptions(
+ BlobStoringDatabaseDbProperties.DbTablePrefix,
+ BlobStoringDatabaseDbProperties.DbSchema
+ );
+
+ optionsAction?.Invoke(options);
+
+ builder.Entity(b =>
+ {
+ b.ToTable(options.TablePrefix + "BlobContainers", options.Schema);
+
+ b.ConfigureByConvention();
+
+ b.Property(p => p.Name).IsRequired().HasMaxLength(DatabaseContainerConsts.MaxNameLength);
+
+ b.HasIndex(x => new {x.TenantId, x.Name});
+ });
+
+ builder.Entity(b =>
+ {
+ b.ToTable(options.TablePrefix + "Blobs", options.Schema);
+
+ b.ConfigureByConvention();
+
+ b.Property(p => p.ContainerId).IsRequired(); //TODO: Foreign key!
+ b.Property(p => p.Name).IsRequired().HasMaxLength(DatabaseBlobConsts.MaxNameLength);
+ b.Property(p => p.Content).HasMaxLength(DatabaseBlobConsts.MaxContentLength);
+
+ b.HasIndex(x => new {x.TenantId, x.ContainerId, x.Name});
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseModelBuilderConfigurationOptions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringModelBuilderConfigurationOptions.cs
similarity index 65%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseModelBuilderConfigurationOptions.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringModelBuilderConfigurationOptions.cs
index 324eb46c34..fce10576be 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDatabaseModelBuilderConfigurationOptions.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringModelBuilderConfigurationOptions.cs
@@ -3,9 +3,9 @@ using Volo.Abp.EntityFrameworkCore.Modeling;
namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
{
- public class BlobStoringDatabaseModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions
+ public class BlobStoringModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions
{
- public BlobStoringDatabaseModelBuilderConfigurationOptions(
+ public BlobStoringModelBuilderConfigurationOptions(
[NotNull] string tablePrefix = "",
[CanBeNull] string schema = null)
: base(
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreBlobRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreBlobRepository.cs
deleted file mode 100644
index a6ac7ae2c1..0000000000
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreBlobRepository.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
-using Volo.Abp.EntityFrameworkCore;
-
-namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
-{
- public class EfCoreBlobRepository : EfCoreRepository, IBlobRepository
- {
- public EfCoreBlobRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
- {
- }
-
- public virtual async Task FindAsync(Guid containerId, string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
- {
- return await DbSet.FirstOrDefaultAsync(
- x => x.ContainerId == containerId &&
- x.Name == name &&
- x.TenantId == tenantId,
- GetCancellationToken(cancellationToken));
- }
-
- public virtual async Task ExistsAsync(Guid containerId, string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
- {
- return await DbSet.AnyAsync(
- x => x.ContainerId == containerId &&
- x.Name == name &&
- x.TenantId == tenantId,
- GetCancellationToken(cancellationToken));
- }
-
- public virtual async Task DeleteAsync(Guid containerId, string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
- {
- var blob = await FindAsync(containerId, name, tenantId, cancellationToken);
-
- if (blob == null)
- {
- return false;
- }
-
- await base.DeleteAsync(blob.Id, cancellationToken: GetCancellationToken(cancellationToken));
- return true;
- }
- }
-}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreContainerRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreContainerRepository.cs
deleted file mode 100644
index 1c35bac904..0000000000
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreContainerRepository.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using Microsoft.EntityFrameworkCore;
-using System;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
-using Volo.Abp.EntityFrameworkCore;
-
-namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
-{
- public class EfCoreContainerRepository : EfCoreRepository, IContainerRepository
- {
- public EfCoreContainerRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
- {
- }
-
- public virtual async Task 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 base.InsertAsync(container, true, GetCancellationToken(cancellationToken));
-
- return container;
- }
-
- public virtual async Task FindAsync(string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
- {
- return await DbSet.WhereIf(tenantId != null, x => x.TenantId == tenantId)
- .FirstOrDefaultAsync(x => x.Name == name, GetCancellationToken(cancellationToken));
- }
- }
-}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreDatabaseBlobContainerRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreDatabaseBlobContainerRepository.cs
new file mode 100644
index 0000000000..fdcbad7de8
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreDatabaseBlobContainerRepository.cs
@@ -0,0 +1,24 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
+{
+ public class EfCoreDatabaseBlobContainerRepository : EfCoreRepository, IDatabaseBlobContainerRepository
+ {
+ public EfCoreDatabaseBlobContainerRepository(IDbContextProvider dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ public virtual async Task FindAsync(string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
+ {
+ return await DbSet.WhereIf(tenantId != null, x => x.TenantId == tenantId)
+ .FirstOrDefaultAsync(x => x.Name == name, GetCancellationToken(cancellationToken));
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreDatabaseBlobRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreDatabaseBlobRepository.cs
new file mode 100644
index 0000000000..95c4ae10c9
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/EfCoreDatabaseBlobRepository.cs
@@ -0,0 +1,58 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
+{
+ public class EfCoreDatabaseBlobRepository : EfCoreRepository, IDatabaseBlobRepository
+ {
+ public EfCoreDatabaseBlobRepository(IDbContextProvider dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ public virtual async Task FindAsync(
+ Guid containerId,
+ string name,
+ Guid? tenantId = null,
+ CancellationToken cancellationToken = default)
+ {
+ return await DbSet.FirstOrDefaultAsync(
+ x => x.ContainerId == containerId && x.Name == name && x.TenantId == tenantId,
+ GetCancellationToken(cancellationToken)
+ );
+ }
+
+ public virtual async Task ExistsAsync(
+ Guid containerId,
+ string name,
+ Guid? tenantId = null,
+ CancellationToken cancellationToken = default)
+ {
+ return await DbSet.AnyAsync(
+ x => x.ContainerId == containerId &&
+ x.Name == name &&
+ x.TenantId == tenantId,
+ GetCancellationToken(cancellationToken));
+ }
+
+ public virtual async Task DeleteAsync(
+ Guid containerId,
+ string name,
+ Guid? tenantId = null,
+ CancellationToken cancellationToken = default)
+ {
+ var blob = await FindAsync(containerId, name, tenantId, cancellationToken);
+ if (blob == null)
+ {
+ return false;
+ }
+
+ await base.DeleteAsync(blob.Id, cancellationToken: GetCancellationToken(cancellationToken));
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/IBlobStoringDatabaseDbContext.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/IBlobStoringDbContext.cs
similarity index 60%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/IBlobStoringDatabaseDbContext.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/IBlobStoringDbContext.cs
index 201efcb27a..16e99cbc9a 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/IBlobStoringDatabaseDbContext.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/IBlobStoringDbContext.cs
@@ -5,10 +5,10 @@ using Volo.Abp.EntityFrameworkCore;
namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
{
[ConnectionStringName(BlobStoringDatabaseDbProperties.ConnectionStringName)]
- public interface IBlobStoringDatabaseDbContext : IEfCoreDbContext
+ public interface IBlobStoringDbContext : IEfCoreDbContext
{
- DbSet Containers { get; }
+ DbSet BlobContainers { get; }
- DbSet Blobs { get; }
+ DbSet Blobs { get; }
}
}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbModule.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbModule.cs
index 868dff97a5..1ad7341a25 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbModule.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbModule.cs
@@ -12,10 +12,10 @@ namespace Volo.Abp.BlobStoring.Database.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- context.Services.AddMongoDbContext(options =>
+ context.Services.AddMongoDbContext(options =>
{
- options.AddRepository();
- options.AddRepository();
+ options.AddRepository();
+ options.AddRepository();
});
}
}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbContext.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContext.cs
similarity index 51%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbContext.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContext.cs
index 6dd9f11979..b07847a204 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbContext.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContext.cs
@@ -5,17 +5,17 @@ using Volo.Abp.MongoDB;
namespace Volo.Abp.BlobStoring.Database.MongoDB
{
[ConnectionStringName(BlobStoringDatabaseDbProperties.ConnectionStringName)]
- public class BlobStoringDatabaseMongoDbContext : AbpMongoDbContext, IBlobStoringDatabaseMongoDbContext
+ public class BlobStoringMongoDbContext : AbpMongoDbContext, IBlobStoringMongoDbContext
{
- public IMongoCollection Containers => Collection();
+ public IMongoCollection BlobContainers => Collection();
- public IMongoCollection Blobs => Collection();
+ public IMongoCollection Blobs => Collection();
protected override void CreateModel(IMongoModelBuilder modelBuilder)
{
base.CreateModel(modelBuilder);
- modelBuilder.ConfigureDatabaseBlobStoring();
+ modelBuilder.ConfigureBlobStoring();
}
}
}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbContextExtensions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContextExtensions.cs
similarity index 60%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbContextExtensions.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContextExtensions.cs
index fa9442cd65..f96f991bc9 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoDbContextExtensions.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContextExtensions.cs
@@ -3,26 +3,26 @@ using Volo.Abp.MongoDB;
namespace Volo.Abp.BlobStoring.Database.MongoDB
{
- public static class BlobStoringDatabaseMongoDbContextExtensions
+ public static class BlobStoringMongoDbContextExtensions
{
- public static void ConfigureDatabaseBlobStoring(
+ public static void ConfigureBlobStoring(
this IMongoModelBuilder builder,
Action optionsAction = null)
{
Check.NotNull(builder, nameof(builder));
- var options = new BlobStoringDatabaseMongoModelBuilderConfigurationOptions(
+ var options = new BlobStoringMongoModelBuilderConfigurationOptions(
BlobStoringDatabaseDbProperties.DbTablePrefix
);
optionsAction?.Invoke(options);
- builder.Entity(b =>
+ builder.Entity(b =>
{
- b.CollectionName = options.CollectionPrefix + "Containers";
+ b.CollectionName = options.CollectionPrefix + "BlobContainers";
});
- builder.Entity(b =>
+ builder.Entity(b =>
{
b.CollectionName = options.CollectionPrefix + "Blobs";
});
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoModelBuilderConfigurationOptions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoModelBuilderConfigurationOptions.cs
similarity index 54%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoModelBuilderConfigurationOptions.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoModelBuilderConfigurationOptions.cs
index 27133ac6dc..f0f786e1dd 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringDatabaseMongoModelBuilderConfigurationOptions.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoModelBuilderConfigurationOptions.cs
@@ -3,9 +3,9 @@ using Volo.Abp.MongoDB;
namespace Volo.Abp.BlobStoring.Database.MongoDB
{
- public class BlobStoringDatabaseMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions
+ public class BlobStoringMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions
{
- public BlobStoringDatabaseMongoModelBuilderConfigurationOptions(
+ public BlobStoringMongoModelBuilderConfigurationOptions(
[NotNull] string collectionPrefix = "")
: base(collectionPrefix)
{
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/IBlobStoringDatabaseMongoDbContext.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/IBlobStoringMongoDbContext.cs
similarity index 53%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/IBlobStoringDatabaseMongoDbContext.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/IBlobStoringMongoDbContext.cs
index 7f90312a6d..d7a9eb3966 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/IBlobStoringDatabaseMongoDbContext.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/IBlobStoringMongoDbContext.cs
@@ -5,10 +5,10 @@ using Volo.Abp.MongoDB;
namespace Volo.Abp.BlobStoring.Database.MongoDB
{
[ConnectionStringName(BlobStoringDatabaseDbProperties.ConnectionStringName)]
- public interface IBlobStoringDatabaseMongoDbContext : IAbpMongoDbContext
+ public interface IBlobStoringMongoDbContext : IAbpMongoDbContext
{
- IMongoCollection Containers { get; }
+ IMongoCollection BlobContainers { get; }
- IMongoCollection Blobs { get; }
+ IMongoCollection Blobs { get; }
}
}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbContainerRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbContainerRepository.cs
deleted file mode 100644
index 47911d685e..0000000000
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbContainerRepository.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-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, IContainerRepository
- {
- public MongoDbContainerRepository(IMongoDbContextProvider dbContextProvider) : base(dbContextProvider)
- {
- }
-
- public virtual async Task 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 FindAsync(string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
- {
- return await base.FindAsync(x => x.Name == name, cancellationToken: GetCancellationToken(cancellationToken));
- }
- }
-}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbDatabaseBlobContainerRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbDatabaseBlobContainerRepository.cs
new file mode 100644
index 0000000000..149835ab5a
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbDatabaseBlobContainerRepository.cs
@@ -0,0 +1,21 @@
+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 MongoDbDatabaseBlobContainerRepository : MongoDbRepository, IDatabaseBlobContainerRepository
+ {
+ public MongoDbDatabaseBlobContainerRepository(IMongoDbContextProvider dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ public virtual async Task FindAsync(string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
+ {
+ return await base.FindAsync(x => x.Name == name && x.TenantId == tenantId, cancellationToken: GetCancellationToken(cancellationToken));
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbBlobRepository.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbDatabaseBlobRepository.cs
similarity index 77%
rename from modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbBlobRepository.cs
rename to modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbDatabaseBlobRepository.cs
index 185751d1a5..b577df07a8 100644
--- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbBlobRepository.cs
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/MongoDbDatabaseBlobRepository.cs
@@ -7,13 +7,13 @@ using Volo.Abp.MongoDB;
namespace Volo.Abp.BlobStoring.Database.MongoDB
{
- public class MongoDbBlobRepository : MongoDbRepository, IBlobRepository
+ public class MongoDbDatabaseBlobRepository : MongoDbRepository, IDatabaseBlobRepository
{
- public MongoDbBlobRepository(IMongoDbContextProvider dbContextProvider) : base(dbContextProvider)
+ public MongoDbDatabaseBlobRepository(IMongoDbContextProvider dbContextProvider) : base(dbContextProvider)
{
}
- public virtual async Task FindAsync(Guid containerId, string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
+ public virtual async Task FindAsync(Guid containerId, string name, Guid? tenantId = null, CancellationToken cancellationToken = default)
{
return await GetMongoQueryable().FirstOrDefaultAsync(
x => x.ContainerId == containerId &&
diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs
index 617c9373b9..9b9c235cc2 100644
--- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs
+++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs
@@ -31,8 +31,8 @@ namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore
var connection = new SqliteConnection("Data Source=:memory:");
connection.Open();
- new BlobStoringDatabaseDbContext(
- new DbContextOptionsBuilder().UseSqlite(connection).Options
+ new BlobStoringDbContext(
+ new DbContextOptionsBuilder().UseSqlite(connection).Options
).GetService().CreateTables();
return connection;