Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }