public async Task <RawItemMetadata> AddItem(RawItemMutation value) { if (value.CategoryId is null) { throw new NullReferenceException("Category can't be null"); } var category = DbContext.Categories.Find(value.CategoryId); var item = new RawItemMetadata { Id = value.Id ?? Guid.NewGuid().ToString(), AccessTime = value.AccessTime ?? DateTimeOffset.Now, ModificationTime = value.ModificationTime ?? DateTimeOffset.Now, CreationTime = value.CreationTime ?? DateTimeOffset.Now, Domain = value.Domain ?? "", Remarks = value.Remarks ?? "", Attachments = value.Attachments ?? "", Category = category, }; if (value.TagIds is not null) { item.Tags = value.TagIds.Select(id => DbContext.Tags.Find(id)).ToList(); } DbContext.Items.Add(item); await DbContext.SaveChangesAsync(); await ReloadItem(item); return(item); }
public async Task <RawItemMetadata?> UpdateItem(RawItemMutation value) { var item = await GetItem(value.Id); if (item is not null) { if (value.Domain is not null) { item.Domain = value.Domain; } if (value.AccessTime is not null) { item.AccessTime = value.AccessTime.Value; } if (value.ModificationTime is not null) { item.ModificationTime = value.ModificationTime.Value; } if (value.CreationTime is not null) { item.CreationTime = value.CreationTime.Value; } if (value.Remarks is not null) { item.Remarks = value.Remarks; } if (value.Attachments is not null) { item.Attachments = value.Attachments; } if (value.CategoryId is not null) { var category = DbContext.Categories.Find(value.CategoryId); item.Category = category; } if (value.TagIds is not null) { item.Tags = value.TagIds.Select(id => DbContext.Tags.Find(id)).ToList(); } await DbContext.SaveChangesAsync(); await ReloadItem(item); } return(item); }
public async Task <RawItemMetadata?> UpdateItem(RawItemMutation mutation, [Service] ItemMetadataServer.ModuleService service) { return(await service.UpdateItem(mutation)); }