mirror of
https://github.com/plausible/analytics.git
synced 2024-10-27 02:42:29 +03:00
Use group by for grouping tweets
This commit is contained in:
parent
55bca892d1
commit
9df398b663
@ -253,10 +253,7 @@ defmodule Plausible.Stats do
|
||||
tweets = Repo.all(
|
||||
from t in Plausible.Twitter.Tweet,
|
||||
where: t.link in ^urls
|
||||
) |> Enum.reduce(%{}, fn tweet, acc ->
|
||||
Map.update(acc, tweet.link, [tweet], &([tweet | &1]))
|
||||
end)
|
||||
|> IO.inspect
|
||||
) |> Enum.group_by(&(&1.link))
|
||||
|
||||
Enum.map(referring_urls, fn url ->
|
||||
Map.put(url, :tweets, tweets[url[:name]])
|
||||
|
@ -133,5 +133,21 @@ defmodule PlausibleWeb.Api.StatsController.ReferrersTest do
|
||||
"search_terms" => terms
|
||||
}
|
||||
end
|
||||
|
||||
test "enriches twitter referrers with tweets if available", %{conn: conn, site: site} do
|
||||
insert(:pageview, hostname: site.domain, referrer: "t.co/some-link", referrer_source: "Twitter", timestamp: ~N[2019-01-01 01:00:00])
|
||||
insert(:pageview, hostname: site.domain, referrer: "t.co/some-link", referrer_source: "Twitter", timestamp: ~N[2019-01-01 01:00:00])
|
||||
insert(:pageview, hostname: site.domain, referrer: "t.co/nonexistent-link", referrer_source: "Twitter", timestamp: ~N[2019-01-01 02:00:00])
|
||||
|
||||
insert(:tweet, link: "t.co/some-link", text: "important tweet")
|
||||
|
||||
conn = get(conn, "/api/stats/#{site.domain}/referrers/Twitter?period=day&date=2019-01-01")
|
||||
|
||||
res = json_response(conn, 200)
|
||||
assert res["total_visitors"] == 3
|
||||
assert [tweet1, tweet2] = res["referrers"]
|
||||
assert %{"name" => "t.co/some-link", "count" => 2, "tweets" => [%{"text" => "important tweet"}]} = tweet1
|
||||
assert %{"name" => "t.co/nonexistent-link", "count" => 1, "tweets" => nil} = tweet2
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -79,4 +79,15 @@ defmodule Plausible.Factory do
|
||||
expires: Timex.now() |> Timex.shift(days: 1)
|
||||
}
|
||||
end
|
||||
|
||||
def tweet_factory do
|
||||
%Plausible.Twitter.Tweet{
|
||||
tweet_id: UUID.uuid4(),
|
||||
author_handle: "author-handle",
|
||||
author_name: "author-name",
|
||||
author_image: "pic.twitter.com/author.png",
|
||||
text: "tweet-text",
|
||||
created: Timex.now()
|
||||
}
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user