/// <summary> /// Adds the child. /// </summary> /// <param name="item">The item.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> /// <exception cref="System.InvalidOperationException">Unable to add + item.Name</exception> public async Task AddChild(BaseItem item, CancellationToken cancellationToken) { item.SetParent(this); if (item.Id == Guid.Empty) { item.Id = LibraryManager.GetNewItemId(item.Path, item.GetType()); } if (ActualChildren.Any(i => i.Id == item.Id)) { throw new ArgumentException(string.Format("A child with the Id {0} already exists.", item.Id)); } if (item.DateCreated == DateTime.MinValue) { item.DateCreated = DateTime.UtcNow; } if (item.DateModified == DateTime.MinValue) { item.DateModified = DateTime.UtcNow; } AddChildInternal(item); await LibraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false); await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false); }
private BaseItem RetrieveChild(BaseItem child) { if (child == null || child.Id == Guid.Empty) { Logger.Error("Item found with empty Id: " + (child.Path ?? child.Name)); return(null); } var item = LibraryManager.GetMemoryItemById(child.Id); if (item != null) { if (item is IByReferenceItem) { return(LibraryManager.GetOrAddByReferenceItem(item)); } item.SetParent(this); } else { child.SetParent(this); LibraryManager.RegisterItem(child); item = child; } return(item); }
/// <summary> /// Removes the child. /// </summary> /// <param name="item">The item.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> /// <exception cref="System.InvalidOperationException">Unable to remove + item.Name</exception> public Task RemoveChild(BaseItem item, CancellationToken cancellationToken) { RemoveChildrenInternal(new[] { item }); item.SetParent(null); return(ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken)); }
/// <summary> /// Removes the child. /// </summary> /// <param name="item">The item.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> /// <exception cref="System.InvalidOperationException">Unable to remove + item.Name</exception> public Task RemoveChild(BaseItem item, CancellationToken cancellationToken) { RemoveChildrenInternal(new[] { item }); item.SetParent(null); if (!EnableNewFolderQuerying()) { return(ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken)); } return(Task.FromResult(true)); }
/// <summary> /// Removes the child. /// </summary> /// <param name="item">The item.</param> public void RemoveChild(BaseItem item) { item.SetParent(null); }