Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        async Task ReloadItem(RawItemMetadata value)
        {
            var entry = DbContext.Entry(value);
            await entry.ReloadAsync();

            await entry.Reference(x => x.Category).LoadAsync();

            await entry.Collection(x => x.Tags).LoadAsync();
        }