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; } }
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; } }