public async Task <bool> AddFile(string name, Func <Task <Stream> > binaryData)
        {
            if (await _context.FileInfos.FindAsync(name) != null)
            {
                return(false);
            }

            var info = new FileBlobInfoEntity
            {
                FileName     = name,
                CreationTime = DateTime.Now
            };
            var blob = new FileBlobEntity
            {
                Key = name
            };

            using var input = await binaryData();

            using var output = new MemoryStream();

            await Compressor.Compressor.CompressFileLzma(input, output);

            blob.Data = output.ToArray();
            info.Size = blob.Data.LongLength;

            await _context.AddRangeAsync(info, blob);

            return(true);
        }
Beispiel #2
0
        private async Task FillDataBase(TestingObject <FileDatabase> testObject)
        {
            var context = testObject.GetDependency <FilesDbContext>();

            _big   = Properties.Resources.bm19_07777_Covers_FB_001_Einzelform_Umschlagen_LACK_pdf;
            _small = Properties.Resources.bm19_07777_Covers_FB_001_Einzelform_Umschlagen_LACK_tif;

            _bigSize   = _big.Length;
            _smallSize = _small.Length;

            _databaseSize = _bigSize + _smallSize;

            var oldEi = new FileBlobInfoEntity {
                CreationTime = new DateTime(2015, 1, 1), FileName = "Old", Size = _bigSize
            };
            var newEi = new FileBlobInfoEntity {
                CreationTime = new DateTime(2017, 1, 1), FileName = "New", Size = _smallSize
            };

            var oldE = new FileBlobEntity {
                Data = _big, Key = OldConst
            };
            var newE = new FileBlobEntity {
                Data = _small, Key = NewConst
            };

            await context.FileInfos.AddRangeAsync(oldEi, newEi);

            await context.Blobs.AddRangeAsync(oldE, newE);
        }