コード例 #1
0
ファイル: MangaManager.cs プロジェクト: junkdood/Otokoneko
        public async ValueTask <bool> RemoveMangaFavorite(long userId, long mangaId)
        {
            using var context = Context;
            var favoriteService = new FavoriteService(context);

            context.BeginTran();
            try
            {
                if (await favoriteService.DeleteAsync(it => it.EntityId == mangaId && it.UserId == userId))
                {
                    context.CommitTran();
                    return(true);
                }
                context.RollbackTran();
                return(false);
            }
            catch (Exception e)
            {
                context.RollbackTran();
                throw;
            }
        }
コード例 #2
0
ファイル: MangaManager.cs プロジェクト: junkdood/Otokoneko
        public async ValueTask <bool> DeleteManga(long mangaId)
        {
            using var context = Context;
            var mangaService           = new MangaService(context);
            var chapterService         = new ChapterService(context);
            var imageService           = new ImageService(context);
            var mangaTagMappingService = new MangaTagMappingService(context);
            var favoriteService        = new FavoriteService(context);
            var readProgressService    = new ReadProgressService(context);

            context.BeginTran();
            try
            {
                var chapters = await chapterService.GetListAsync(it => it.MangaId == mangaId);

                var chapterIds = chapters.Select(it => it.ObjectId).ToList();
                await mangaService.DeleteAsync(it => it.ObjectId == mangaId);

                await mangaTagMappingService.DeleteAsync(it => it.MangaId == mangaId);

                await chapterService.DeleteAsync(it => it.MangaId == mangaId);

                await imageService.DeleteAsync(it => chapterIds.Contains(it.ChapterId));

                await favoriteService.DeleteAsync(it => it.EntityId == mangaId);

                await readProgressService.DeleteAsync(it => it.MangaId == mangaId);

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