Esempio n. 1
0
        public async ValueTask <bool> DeleteTagType(long tagTypeId)
        {
            using var context = Context;
            var mangaTagMappingService = new MangaTagMappingService(context);
            var tagService             = new TagService(context);
            var tagTypeService         = new TagTypeService(context);

            try
            {
                context.BeginTran();

                var tags = await tagService.GetListAsync(it => it.TypeId == tagTypeId);

                var keys = tags.Select(it => it.Key).ToList();
                await mangaTagMappingService.DeleteAsync(it => keys.Contains(it.TagId));

                await tagService.DeleteAsync(it => it.TypeId == tagTypeId);

                await tagTypeService.DeleteAsync(it => it.ObjectId == tagTypeId);

                context.CommitTran();
                return(true);
            }
            catch (Exception e)
            {
                context.RollbackTran();
                throw;
            }
        }
Esempio n. 2
0
        public async ValueTask <bool> DeleteTag(long tagId)
        {
            using var context = Context;
            var mangaTagMappingService = new MangaTagMappingService(context);
            var tagService             = new TagService(context);

            context.BeginTran();
            try
            {
                context.BeginTran();
                var tag = await tagService.GetSingleAsync(it => it.ObjectId == tagId);

                if (tag.Key == tag.ObjectId)
                {
                    var keyTagList = await tagService.GetListAsync(it => it.Key == tagId && it.ObjectId != tagId);

                    if (keyTagList.Count != 0)
                    {
                        var newKey = keyTagList.First().ObjectId;
                        await tagService.UpdateKey(tagId, newKey);

                        await mangaTagMappingService.Update(tagId, newKey);
                    }
                    else
                    {
                        await mangaTagMappingService.DeleteAsync(it => it.TagId == tagId);
                    }
                }

                await tagService.DeleteAsync(it => it.ObjectId == tagId);

                context.CommitTran();
                FtsIndexService.DeleteTagFtxIndex(tagId);
                return(true);
            }
            catch (Exception e)
            {
                context.RollbackTran();
                throw;
            }
        }