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;