Skip to content

Commit

Permalink
PageSitemapSpec
Browse files Browse the repository at this point in the history
  • Loading branch information
EdiWang committed May 3, 2024
1 parent b364de9 commit da1796e
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
8 changes: 8 additions & 0 deletions src/Moonglade.Data/SiteMapInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Moonglade.Data;

public class SiteMapInfo
{
public string Slug { get; set; }
public DateTime CreateTimeUtc { get; set; }
public DateTime? UpdateTimeUtc { get; set; }
}
18 changes: 18 additions & 0 deletions src/Moonglade.Data/Specifications/PageSitemapSpec.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using Moonglade.Data.Entities;

namespace Moonglade.Data.Specifications;

public sealed class PageSitemapSpec : Specification<PageEntity, SiteMapInfo>
{
public PageSitemapSpec()
{
Query.Where(p => p.IsPublished);
Query.Select(p => new SiteMapInfo
{
Slug = p.Slug,
CreateTimeUtc = p.CreateTimeUtc,
UpdateTimeUtc = p.UpdateTimeUtc
});
Query.AsNoTracking();
}
}
15 changes: 5 additions & 10 deletions src/Moonglade.Web/Middleware/SiteMapMiddleware.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,13 @@ private static async Task<string> GetSiteMapData(
}

// Pages
var pages = await pageRepo.SelectAsync(page => new Tuple<DateTime, DateTime?, string, bool>(
page.CreateTimeUtc,
page.UpdateTimeUtc,
page.Slug,
page.IsPublished), ct);

foreach (var (createdTimeUtc, updateTimeUtc, slug, isPublished) in pages.Where(p => p.Item4))
var pages = await pageRepo.ListAsync(new PageSitemapSpec(), ct);
foreach (var page in pages)
{
writer.WriteStartElement("url");
writer.WriteElementString("loc", $"{siteRootUrl}/page/{slug.ToLower()}");
writer.WriteElementString("lastmod", createdTimeUtc.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
writer.WriteElementString("changefreq", GetChangeFreq(createdTimeUtc, updateTimeUtc));
writer.WriteElementString("loc", $"{siteRootUrl}/page/{page.Slug.ToLower()}");
writer.WriteElementString("lastmod", page.CreateTimeUtc.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
writer.WriteElementString("changefreq", GetChangeFreq(page.CreateTimeUtc, page.UpdateTimeUtc));
await writer.WriteEndElementAsync();
}

Expand Down

0 comments on commit da1796e

Please sign in to comment.