Add since_id for activitypub fetching.

This commit is contained in:
Roger Braun 2017-03-21 20:31:48 +01:00
parent d4cf273f28
commit b9d0e34506
2 changed files with 17 additions and 1 deletions

View file

@ -7,9 +7,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
Repo.insert(%Activity{data: map}) Repo.insert(%Activity{data: map})
end end
def fetch_public_activities do def fetch_public_activities(opts \\ %{}) do
since_id = opts[:since_id] || 0
query = from activity in Activity, query = from activity in Activity,
where: fragment(~s(? @> '{"to": ["https://www.w3.org/ns/activitystreams#Public"]}'), activity.data), where: fragment(~s(? @> '{"to": ["https://www.w3.org/ns/activitystreams#Public"]}'), activity.data),
where: activity.id > ^since_id,
limit: 20, limit: 20,
order_by: [desc: :inserted_at] order_by: [desc: :inserted_at]

View file

@ -34,5 +34,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
assert length(activities) == 20 assert length(activities) == 20
assert last == last_expected assert last == last_expected
end end
test "retrieves ids starting from a since_id" do
activities = ActivityBuilder.insert_list(30)
later_activities = ActivityBuilder.insert_list(10)
since_id = List.last(activities).id
last_expected = List.last(later_activities)
activities = ActivityPub.fetch_public_activities(%{since_id: since_id})
last = List.last(activities)
assert length(activities) == 10
assert last == last_expected
end
end end
end end