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 Adamantium
module Repos module Repos
class PostRepo < Adamantium::Repo[:posts] class PostRepo < Adamantium::Repo[:posts]
def for_reminders(limit:) def recent(limit:)
date = Time.now
posts 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) .limit(limit)
.published .published
.combine(:tags)
.order(Sequel.desc(:published_at)) .order(Sequel.desc(:published_at))
.to_a .to_a
end 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 end
end end

View File

@@ -6,7 +6,18 @@ module Adamantium
repo = Adamantium::Container["repos.post_repo"] repo = Adamantium::Container["repos.post_repo"]
app_settings = Adamantium::Container["settings"] 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| bookmarks_struct = bookmarks.map do |bookmark|
{ {
name: bookmark.name, name: bookmark.name,