DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’» is a community of 966,904 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Create account Log in
Jesse Phillips
Jesse Phillips

Posted on

Hobby Project: Filter for Newest Articles

If you read my previous post which focused on test data for this functionality, you may find the effort disproportionate.

https://gitlab.com/jessephillips/devarticlator/-/compare/v0.0.6...v0.0.7

auto isNewerArticle(ArticleMe am, PullState ps) {
-    return null;
+    return am.id > ps.lastArticle;
Enter fullscreen mode Exit fullscreen mode

That is the implementation. Given an article and the previous pull data, the newer articles are the ones with the greater ID number.

This assumes articles are given newest first and that article IDs are given increasingly. However if the first isn't true I won't have reason to attempt short circuit.


alias inPreviousPull = (x) => !x.isNewerArticle(lastPullState);

devreqArticleRange.until!inPreviousPull
  .structureArticles
  .saveArticles(savePath);
Enter fullscreen mode Exit fullscreen mode

You won't find the above code in the changes, I've taken the unittest and pulled out the complete concept to save new articles.

If I abstract the dev api into a range, I'll be using a normal range sequence and combined with the components I've already tested.

What is miss here is storing and retrieval of this lastPullState.


I wrote the test first. I almost didn't because the implications was so simple, but it is good to see the test fail.

Top comments (1)

Collapse
 
jessekphillips profile image
Jesse Phillips Author

I've realized that this approach for filtering is seriously flawed because of the unpublished. Can you figure it out?

Update Your DEV Experience Level:

Settings

Go to your customization settings to nudge your home feed to show content more relevant to your developer experience level. πŸ›