"""
def get_existing_like(actor, %{data: %{"id" => id}} = object) do
query = from activity in Activity,
- where: fragment("? @> ?", activity.data, ^%{actor: actor, object: id, type: "Like"})
+ where: fragment("(?)->>'actor' = ?", activity.data, ^actor),
+ # this is to use the index
+ where: fragment("coalesce((?)->'object'->>'id', (?)->>'object') = ?", activity.data, activity.data, ^id),
+ where: fragment("(?)->>'type' = 'Like'", activity.data)
+
Repo.one(query)
end
"type" => "Like",
"actor" => ap_id,
"object" => id,
- "to" => [User.ap_followers(actor), object.data["actor"]],
+ "to" => [actor.follower_address, object.data["actor"]],
"context" => object.data["context"]
}
query = from activity in Activity,
where: fragment("? @> ?", activity.data, ^%{type: "Follow", actor: follower_id,
object: followed_id}),
- order_by: [desc: :inserted_at],
+ order_by: [desc: :id],
limit: 1
Repo.one(query)
end
"type" => "Announce",
"actor" => ap_id,
"object" => id,
- "to" => [User.ap_followers(user), object.data["actor"]],
+ "to" => [user.follower_address, object.data["actor"]],
"context" => object.data["context"]
}