Make bookmark reminders a bit smarter

This commit is contained in:
2024-02-23 18:31:53 +11:00
parent 639bd6c801
commit 96c1df617f
2 changed files with 28 additions and 5 deletions

View File

@@ -1,16 +1,28 @@
require "time_math"
module Adamantium
module Repos
class PostRepo < Adamantium::Repo[:posts]
def for_reminders(limit:)
def recent(limit:)
date = Time.now
posts
.where(post_type: "bookmark", is_read: false)
.where(post_type: "bookmark", is_read: false, published_at: TimeMath.day.advance(date, -7)...TimeMath.day.floor(date))
.limit(limit)
.published
.combine(:tags)
.order(Sequel.desc(:published_at))
.to_a
end
def random(limit:, excluding:)
posts
.where(post_type: "bookmark", is_read: false)
.exclude(id: excluding)
.limit(limit)
.published
.order(Sequel.lit("random()"))
.to_a
end
end
end
end

View File

@@ -6,7 +6,18 @@ module Adamantium
repo = Adamantium::Container["repos.post_repo"]
app_settings = Adamantium::Container["settings"]
bookmarks = repo.for_reminders(limit: limit)
recent_bookmarks = repo.recent(limit: limit)
random_fillers = limit - recent_bookmarks.count
random_bookmarks = if random_fillers > 0
repo.random(limit: random_fillers, excluding: recent_bookmarks.map(&:id))
else
[]
end
bookmarks = recent_bookmarks + random_bookmarks
bookmarks_struct = bookmarks.map do |bookmark|
{
name: bookmark.name,
@@ -46,4 +57,4 @@ module Adamantium
mail.deliver
end
end
end
end