Soundboard.Stats (soundboard v1.7.0)

Handles the stats of the soundboard.

Summary

Types

leaderboard_entry()

@type leaderboard_entry() :: {String.t(), non_neg_integer()}

recent_play_entry()

@type recent_play_entry() :: {integer(), String.t(), String.t(), NaiveDateTime.t()}

Functions

broadcast_stats_update()

@spec broadcast_stats_update() :: :ok | {:error, term()}

get_recent_plays(opts \\ [])

@spec get_recent_plays(keyword()) :: [recent_play_entry()]

get_top_sounds(start_date, end_date, opts \\ [])

@spec get_top_sounds(Date.t(), Date.t(), keyword()) :: [leaderboard_entry()]

get_top_users(start_date, end_date, opts \\ [])

@spec get_top_users(Date.t(), Date.t(), keyword()) :: [leaderboard_entry()]

reset_weekly_stats()

@spec reset_weekly_stats() :: :ok | {:error, term()}

track_play(sound_name, user_id)

@spec track_play(String.t(), integer() | nil) ::
  {:ok, Soundboard.Stats.Play.t()} | {:error, Ecto.Changeset.t()}