public async Task <ExportResult> ExportData(ExportDataType dataType) { switch (dataType) { case ExportDataType.Tags: var tagExp = new SingeJsonExporter <TagEntity>(_tagRepository); var tagExportData = await tagExp.ExportData(p => new { NormalizedTagName = p.NormalizedName, TagName = p.DisplayName }); return(tagExportData); case ExportDataType.Categories: var catExp = new SingeJsonExporter <CategoryEntity>(_catRepository); var catExportData = await catExp.ExportData(p => new { p.DisplayName, Route = p.RouteName, p.Note }); return(catExportData); case ExportDataType.FriendLinks: var fdExp = new SingeJsonExporter <FriendLinkEntity>(_friendlinkRepository); var fdExportData = await fdExp.ExportData(p => new { p.Title, p.LinkUrl }); return(fdExportData); case ExportDataType.Pingbacks: //var pbExp = new SingeJsonExporter<PingbackHistoryEntity>(_pingbackRepository); //var pbExportData = await pbExp.ExportData(p => new //{ // p.Domain, // p.PingTimeUtc, // p.SourceIp, // p.SourceTitle, // p.SourceUrl, // p.TargetPostTitle //}); //return pbExportData; throw new NotImplementedException("Pingback export is not supported for now."); case ExportDataType.Pages: var pgExp = new ZippedJsonExporter <CustomPageEntity>(_pageRepository, "moonglade-pages"); var pgExportData = await pgExp.ExportData(p => new { p.Title, p.CreateOnUtc, p.CssContent, p.HideSidebar, p.HtmlContent, RouteName = p.Slug, p.MetaDescription, p.UpdatedOnUtc }); return(pgExportData); case ExportDataType.Posts: var poExp = new ZippedJsonExporter <PostEntity>(_postRepository, "moonglade-posts"); var poExportData = await poExp.ExportData(p => new { p.Title, p.Slug, p.ContentAbstract, p.PostContent, p.CreateOnUtc, p.CommentEnabled, p.PostExtension.Hits, p.PostExtension.Likes, p.PubDateUtc, p.ContentLanguageCode, p.ExposedToSiteMap, p.IsDeleted, p.IsFeedIncluded, p.IsPublished, Categories = p.PostCategory.Select(pc => pc.Category.DisplayName), Tags = p.PostTag.Select(pt => pt.Tag.DisplayName) }); return(poExportData); default: throw new ArgumentOutOfRangeException(nameof(dataType), dataType, null); } }
public async Task <ExportResult> ExportData(ExportDataType dataType) { switch (dataType) { case ExportDataType.Tags: var tagExp = new CSVExporter <TagEntity>(_tagRepository, "moonglade-tags", _dataDir); var tagExportData = await tagExp.ExportData(p => new { p.Id, p.NormalizedName, p.DisplayName }); return(tagExportData); case ExportDataType.Categories: var catExp = new CSVExporter <CategoryEntity>(_catRepository, "moonglade-categories", _dataDir); var catExportData = await catExp.ExportData(p => new { p.Id, p.DisplayName, p.RouteName, p.Note }); return(catExportData); case ExportDataType.FriendLinks: var fdExp = new CSVExporter <FriendLinkEntity>(_friendlinkRepository, "moonglade-friendlinks", _dataDir); var fdExportData = await fdExp.ExportData(p => p); return(fdExportData); case ExportDataType.Pages: var pgExp = new ZippedJsonExporter <PageEntity>(_pageRepository, "moonglade-pages", _dataDir); var pgExportData = await pgExp.ExportData(p => new { p.Id, p.Title, p.Slug, p.MetaDescription, p.HtmlContent, p.CssContent, p.HideSidebar, p.IsPublished, p.CreateTimeUtc, p.UpdateTimeUtc }); return(pgExportData); case ExportDataType.Posts: var poExp = new ZippedJsonExporter <PostEntity>(_postRepository, "moonglade-posts", _dataDir); var poExportData = await poExp.ExportData(p => new { p.Title, p.Slug, p.ContentAbstract, p.PostContent, p.CreateTimeUtc, p.CommentEnabled, p.PostExtension.Hits, p.PostExtension.Likes, p.PubDateUtc, p.ContentLanguageCode, p.ExposedToSiteMap, p.IsDeleted, p.IsFeedIncluded, p.IsPublished, Categories = p.PostCategory.Select(pc => pc.Category.DisplayName), Tags = p.Tags.Select(pt => pt.DisplayName) }); return(poExportData); default: throw new ArgumentOutOfRangeException(nameof(dataType), dataType, null); } }