public async Task <TEntity> Insert(TEntity entity) { entity.Id = AssignId(); await Task.Run(() => LiteDbUtility.Command(_dbName, db => { ICollection <FileModel> fileList = new List <FileModel>(); var isFileContainer = entity is IFileContainer; if (isFileContainer) { foreach (var f in (entity as IFileContainer).Files) { f.ParentId = entity.Id; f.Id = AssignId(); fileList.Add(new FileModel { Id = f.Id, DisplayFileName = f.DisplayFileName, Bytes = f.Bytes }); f.Bytes = null; } } db.GetCollection <TEntity>().Insert(entity); if (isFileContainer) { foreach (var f in (entity as IFileContainer).Files) { f.Bytes = fileList.First(i => i.Id == f.Id).Bytes; } } })); return(entity); }
public async Task <IEnumerable <TEntity> > BulkInsert(IEnumerable <TEntity> entities, bool trackIds = false) { foreach (var e in entities) { e.Id = AssignId(); } await Task.Run(() => LiteDbUtility.Command(_dbName, db => db.GetCollection <TEntity>().InsertBulk(entities))); return(entities); }
public async Task <TEntity> Delete(TEntity entity) { await Task.Run(() => LiteDbUtility.Command(_dbName, db => { var col = db.GetCollection <TEntity>(); if (!col.Delete(entity.Id.ToString())) { entity = default; } })); return(entity); }
public async Task <IEnumerable <FileStorageResponse> > Delete(IEnumerable <FileModel> files) { var furList = new List <FileStorageResponse>(); await Task.Run(() => LiteDbUtility.Command(_dbName, db => { foreach (var f in files) { var s = db.FileStorage.Delete(f.Id); furList.Add(new FileStorageResponse { File = f, Status = s ? FileStoreState.Deleted : FileStoreState.DeleteFailed }); } })); return(furList); }
public async Task <IEnumerable <FileStorageResponse> > Upload(IEnumerable <FileModel> files) { var furList = new List <FileStorageResponse>(); await Task.Run(() => LiteDbUtility.Command(_dbName, db => { foreach (var f in files) { using (var stream = f.TempPath.HasValue() ? File.OpenRead(f.TempPath) : new MemoryStream(f.Bytes.ToArray()) as Stream) { var lfi = db.FileStorage.Upload(f.Id, f.StoredFileName, stream); furList.Add(new FileStorageResponse { File = f, Status = FileStoreState.Uploaded }); } } })); return(furList); }
public async Task <TEntity> Update(TEntity entity) { await Task.Run(() => LiteDbUtility.Command(_dbName, db => db.GetCollection <TEntity>().Update(entity))); return(entity); }