lib/nostrum/cache/cache_supervisor.ex

defmodule Nostrum.Cache.CacheSupervisor do
  @moduledoc """
  Supervises caches for nostrum structures.

  See the documentation for the relevant submodules for details:

  - `Nostrum.Cache.ChannelCache`
  - `Nostrum.Cache.GuildCache`
  - `Nostrum.Cache.Me`
  - `Nostrum.Cache.PresenceCache`
  - `Nostrum.Cache.UserCache`
  """

  use Supervisor

  def start_link([]) do
    Supervisor.start_link(__MODULE__, [], name: CacheSupervisor)
  end

  def init([]) do
    children = [
      Nostrum.Cache.Me,
      # Uses the configured cache implementations.
      Nostrum.Cache.GuildCache,
      Nostrum.Cache.UserCache,
      Nostrum.Cache.ChannelCache,
      Nostrum.Cache.PresenceCache
    ]

    Supervisor.init(children, strategy: :one_for_one)
  end
end