示例#1
0
        public override async Task <Stream> GetOrNullAsync(BlobProviderGetArgs args)
        {
            var container = await DatabaseBlobContainerRepository.FindAsync(
                args.ContainerName,
                args.CancellationToken
                );

            if (container == null)
            {
                return(null);
            }

            var blob = await DatabaseBlobRepository.FindAsync(
                container.Id,
                args.BlobName,
                args.CancellationToken
                );

            if (blob == null)
            {
                return(null);
            }

            return(new MemoryStream(blob.Content));
        }
示例#2
0
        public override async Task <bool> ExistsAsync(BlobProviderExistsArgs args)
        {
            var container =
                await DatabaseBlobContainerRepository.FindAsync(args.ContainerName,
                                                                args.CancellationToken);

            if (container == null)
            {
                return(false);
            }

            return(await DatabaseBlobRepository.ExistsAsync(container.Id, args.BlobName,
                                                            args.CancellationToken));
        }
示例#3
0
        protected virtual async Task <DatabaseBlobContainer> GetOrCreateContainerAsync(
            string name,
            CancellationToken cancellationToken = default)
        {
            var container = await DatabaseBlobContainerRepository.FindAsync(name, cancellationToken);

            if (container != null)
            {
                return(container);
            }

            container = new DatabaseBlobContainer(GuidGenerator.Create(), name, CurrentTenant.Id);
            await DatabaseBlobContainerRepository.InsertAsync(container, cancellationToken : cancellationToken);

            return(container);
        }
示例#4
0
        public override async Task <bool> DeleteAsync(BlobProviderDeleteArgs args)
        {
            var container = await DatabaseBlobContainerRepository.FindAsync(
                args.ContainerName,
                args.CancellationToken
                );

            if (container == null)
            {
                return(false);
            }

            return(await DatabaseBlobRepository.DeleteAsync(
                       container.Id,
                       args.BlobName,
                       autoSave : true,
                       cancellationToken : args.CancellationToken
                       ));
        }