diff options
| author | Nathan Perry <np@nathanperry.dev> | 2024-08-07 09:20:08 -0400 |
|---|---|---|
| committer | Nathan Perry <np@nathanperry.dev> | 2024-08-07 09:24:56 -0400 |
| commit | 5b639185cca5a2d1dc18c99699065e8a5623dbf1 (patch) | |
| tree | 298a8a67e6ee34c9df918ee90eae76505f4bd24b | |
| parent | 91c1dc86f9386e56c113f6b6981772fe4d2fd7e1 (diff) | |
general rework, starting to use ecto
| -rw-r--r-- | config/config.exs | 7 | ||||
| -rw-r--r-- | lib/application.ex | 3 | ||||
| -rw-r--r-- | lib/audio/server.ex | 5 | ||||
| -rw-r--r-- | lib/command/command.ex | 6 | ||||
| -rw-r--r-- | lib/command/meme.ex | 6 | ||||
| -rw-r--r-- | lib/consumer.ex | 4 | ||||
| -rw-r--r-- | lib/db/db.ex | 5 | ||||
| -rw-r--r-- | lib/db/schema.ex | 83 | ||||
| -rw-r--r-- | lib/message.ex | 3 | ||||
| -rw-r--r-- | mix.exs | 10 | ||||
| -rw-r--r-- | mix.lock | 35 |
11 files changed, 139 insertions, 28 deletions
diff --git a/config/config.exs b/config/config.exs index 53acb96..cfd4263 100644 --- a/config/config.exs +++ b/config/config.exs @@ -1,7 +1,7 @@ import Config config :nostrum, - token: "NTM4MjA0NTYyMTU1MjQxNDgz.GHQMG6.WMNuny5iGpCvUKfLuQx_w9k6zkow7AhNNbw-B4", + token: "NTM4MjA0NTYyMTU1MjQxNDgz.GHroNu.1j6C5W5ZrBDBsNcWyPJLAOtpCe0tJr3rPcj0iY", gateway_intents: [ :guild_messages, :guild_message_reactions, @@ -16,3 +16,8 @@ config :logger, config :logger, :console, format: "[$level] $message ($metadata)\n", metadata: [:module] + +config :thulani, Thulani.Repo, + database: "memes", + username: "thulani", + hostname: "localhost" diff --git a/lib/application.ex b/lib/application.ex index be6d76f..f469b0d 100644 --- a/lib/application.ex +++ b/lib/application.ex @@ -7,7 +7,8 @@ defmodule Thulani do Thulani.DiscordConsumer, {Phoenix.PubSub, name: :thulani_pubsub}, Thulani.Command, - {Registry, keys: :unique, name: Thulani.Audio.Registry} + {Registry, keys: :unique, name: Thulani.Audio.Registry}, + Thulani.Repo ] def start(_typ, _arg) do diff --git a/lib/audio/server.ex b/lib/audio/server.ex index 0ec901f..220f898 100644 --- a/lib/audio/server.ex +++ b/lib/audio/server.ex @@ -1,5 +1,4 @@ alias Nostrum.Struct -alias Nostrum.Snowflake defmodule Audio.Server do use GenServer @@ -19,7 +18,7 @@ defmodule Audio.Server do end @spec enqueue(Struct.Guild.id(), audio_ref) :: which - def enqueue(guild, audio_ref) do + def enqueue(_guild, _audio_ref) do GenServer.call(__MODULE__, {:enqueue}) end @@ -54,7 +53,7 @@ defmodule Audio.Server do end @impl true - def handle_call({:cancel, audio_ref}, _from, {guild, q}) do + def handle_call({:cancel, _audio_ref}, _from, {guild, q}) do q = :queue.delete_with(fn _elem -> false end, q) {:reply, :ok, {guild, q}} end diff --git a/lib/command/command.ex b/lib/command/command.ex index f83f02b..07be96c 100644 --- a/lib/command/command.ex +++ b/lib/command/command.ex @@ -17,12 +17,12 @@ defmodule Thulani.Command do end @impl true - def handle_info(Util.command("meme", "", msg), state) do + def handle_info(Util.command("meme", "", _msg), state) do {:noreply, state} end @impl true - def handle_info(Util.command("meme", rest, msg), state) do + def handle_info(Util.command("meme", rest, _msg), state) do case rest do "" -> Thulani.Meme end @@ -30,7 +30,7 @@ defmodule Thulani.Command do {:noreply, state} end - def handle_info(Util.command("http", rest, msg), state) do + def handle_info(Util.command("http", _rest, _msg), _state) do end def handle_info(Util.command("roll", rest, msg), state) do diff --git a/lib/command/meme.ex b/lib/command/meme.ex index 3c51334..5be4582 100644 --- a/lib/command/meme.ex +++ b/lib/command/meme.ex @@ -1,6 +1,4 @@ -alias Nostrum.Api alias Nostrum.Struct.Message -alias Thulani.Command.Util defmodule Thulani.Command.Meme do use GenServer @@ -47,12 +45,12 @@ defmodule Thulani.Command.Meme do end @impl true - def handle_cast(%Request{name: :random, msg: msg, audio: audio}, state) do + def handle_cast(%Request{name: :random, msg: _msg, audio: _audio}, state) do {:noreply, state} end @impl true - def handle_cast(%Request{name: name, msg: msg}, state) do + def handle_cast(%Request{name: _name, msg: _msg}, state) do {:noreply, state} end end diff --git a/lib/consumer.ex b/lib/consumer.ex index 614c261..a594846 100644 --- a/lib/consumer.ex +++ b/lib/consumer.ex @@ -6,10 +6,6 @@ alias Phoenix.PubSub defmodule Thulani.DiscordConsumer do use Nostrum.Consumer - def start_link do - Nostrum.Consumer.start_link(__MODULE__) - end - @spec handle_event(Nostrum.Consumer.message_create()) :: nil def handle_event({ :MESSAGE_CREATE, diff --git a/lib/db/db.ex b/lib/db/db.ex new file mode 100644 index 0000000..b35cee7 --- /dev/null +++ b/lib/db/db.ex @@ -0,0 +1,5 @@ +defmodule Thulani.Repo do + use Ecto.Repo, + otp_app: :thulani, + adapter: Ecto.Adapters.Postgres +end diff --git a/lib/db/schema.ex b/lib/db/schema.ex new file mode 100644 index 0000000..860fc15 --- /dev/null +++ b/lib/db/schema.ex @@ -0,0 +1,83 @@ +defmodule Thulani.Schema do + alias Thulani.Schema + + defmodule Meme do + use Ecto.Schema + + schema "memes" do + has_many(:invocation_records, Schema.InvocationRecord) + + field(:title, :string) + field(:content, :string) + + has_one(:image, Image) + has_one(:audio, Audio) + + belongs_to(:metadata, Metadata) + end + end + + defmodule InvocationRecord do + use Ecto.Schema + + schema "invocation_records" do + field(:user_id, :integer) + field(:message_id, :integer) + field(:time, :utc_datetime) + field(:random, :boolean) + + belongs_to(:meme, Schema.Meme) + end + end + + defmodule Metadata do + use Ecto.Schema + + schema "metadata" do + has_one(:meme, Schema.Meme) + has_one(:audio, Schema.Audio) + has_one(:image, Schema.Image) + + field(:created, :utc_datetime) + field(:created_by, :integer) + end + end + + defmodule Audio do + use Ecto.Schema + + schema "audio" do + belongs_to(:metadata, Schema.Metadata) + belongs_to(:meme, Schema.Meme) + + field(:data, :binary) + field(:data_hash, :binary) + end + end + + defmodule Image do + use Ecto.Schema + + schema "images" do + belongs_to(:metadata, Schema.Metadata) + belongs_to(:meme, Schema.Meme) + + field(:data, :binary) + field(:data_hash, :binary) + field(:filename, :string) + end + end + + defmodule Tombstone do + use Ecto.Schema + + schema "tombstones" do + field(:meme_id, :integer) + + field(:deleted_by, :integer) + field(:deleted_at, :utc_datetime) + + has_one(:metadata, Schema.Metadata) + end + end +end diff --git a/lib/message.ex b/lib/message.ex index 60d3aa8..1f3f08b 100644 --- a/lib/message.ex +++ b/lib/message.ex @@ -23,7 +23,6 @@ defmodule Thulani.Message do guild_id: guild_id, author: %User{ username: username, - discriminator: discriminator, bot: bot } }) @@ -33,7 +32,7 @@ defmodule Thulani.Message do Logger.debug(%{ ignored: true, guild: guild.name, - author: "#{username}##{discriminator} (bot: #{bot})" + author: "#{username}# (bot: #{bot})" }) :ignore @@ -20,15 +20,19 @@ defmodule Thulani.MixProject do defp deps do [ - {:nostrum, "~> 0.6"}, + {:nostrum, "~> 0.10"}, + {:nosedrum, "~> 0.5"}, {:witchcraft, "~> 1.0"}, - {:algae, "~> 1.2"}, {:quark, "~> 2.3"}, {:exceptional, "~> 2.1"}, {:ok, "~> 2.3"}, {:phoenix_pubsub, "~>2.1"}, {:uuid, "~> 1.1"}, - {:rustler, "~> 0.26"} + {:rustler, "~> 0.34"}, + {:ecto_sql, "~> 3.11"}, + {:postgrex, "~> 0.14"}, + {:credo, "~> 1.0", only: [:dev, :test], runtime: false}, + {:dialyxir, "~> 1.1", only: :dev, runtime: false} ] end end @@ -1,25 +1,46 @@ %{ "algae": {:hex, :algae, "1.3.1", "65c1a4747a80221ae3978524d621f3da0f7b7b53f99818464f3817a82d7b49fe", [:mix], [{:quark, "~> 2.2", [hex: :quark, repo: "hexpm", optional: false]}, {:type_class, "~> 1.2", [hex: :type_class, repo: "hexpm", optional: false]}, {:witchcraft, "~> 1.0", [hex: :witchcraft, repo: "hexpm", optional: false]}], "hexpm", "5d43987ab861082b461746a6814f75606f98a6d4b997c3f4bafe85c89996eb12"}, - "certifi": {:hex, :certifi, "2.10.0", "a4ab316320bfca83bd0b57fd022d091555d42a30eefabb38063887158294773a", [:rebar3], [], "hexpm", "e87a9dd6e7fe9c5804887850d4cdbcd83db4da7a27f928174f11e4e06fb7902e"}, + "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, + "castle": {:hex, :castle, "0.3.0", "47b1a550b2348a6d7e60e43ded1df19dca601ed21ef6f267c3dbb1b3a301fbf5", [:mix], [{:forecastle, "~> 0.1.0", [hex: :forecastle, repo: "hexpm", optional: false]}], "hexpm", "dbdc1c171520c4591101938a3d342dec70d36b7f5b102a5c138098581e35fcef"}, + "castore": {:hex, :castore, "1.0.8", "dedcf20ea746694647f883590b82d9e96014057aff1d44d03ec90f36a5c0dc6e", [:mix], [], "hexpm", "0b2b66d2ee742cb1d9cb8c8be3b43c3a70ee8651f37b75a8b982e036752983f1"}, + "certifi": {:hex, :certifi, "2.13.0", "e52be248590050b2dd33b0bb274b56678f9068e67805dca8aa8b1ccdb016bbf6", [:rebar3], [], "hexpm", "8f3d9533a0f06070afdfd5d596b32e21c6580667a492891851b0e2737bc507a1"}, "chacha20": {:hex, :chacha20, "1.0.3", "26372176993172260968b36b4e7bc2e007e6b2b397ae08083e4836df67cdf03c", [:mix], [], "hexpm", "27f23b680e63f04b5bced77a9d8867033b381c091f92d544de0ad93accfb7cec"}, - "cowlib": {:hex, :remedy_cowlib, "2.11.1", "7abb4d0779a7d1c655f7642dc0bd0af754951e95005dfa01b500c68fe35a5961", [:rebar3], [], "hexpm", "0b613dc308e080cb6134285f1b1b55c3873e101652e70c70010fc6651c91b130"}, + "cowlib": {:hex, :cowlib, "2.13.0", "db8f7505d8332d98ef50a3ef34b34c1afddec7506e4ee4dd4a3a266285d282ca", [:make, :rebar3], [], "hexpm", "e1e1284dc3fc030a64b1ad0d8382ae7e99da46c3246b815318a4b848873800a4"}, + "credo": {:hex, :credo, "1.7.7", "771445037228f763f9b2afd612b6aa2fd8e28432a95dbbc60d8e03ce71ba4446", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8bc87496c9aaacdc3f90f01b7b0582467b69b4bd2441fe8aae3109d843cc2f2e"}, "curve25519": {:hex, :curve25519, "1.0.4", "e570561b832c29b3ce4fd8b9fcd9c9546916188860568f1c1fc9428d7cb00894", [:mix], [], "hexpm", "1a068bf9646e7067bf6aa5bf802b404002734e09bb5300f098109df03e31f9f5"}, + "db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"}, + "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"}, + "dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"}, + "ecto": {:hex, :ecto, "3.11.2", "e1d26be989db350a633667c5cda9c3d115ae779b66da567c68c80cfb26a8c9ee", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3c38bca2c6f8d8023f2145326cc8a80100c3ffe4dcbd9842ff867f7fc6156c65"}, + "ecto_sql": {:hex, :ecto_sql, "3.11.3", "4eb7348ff8101fbc4e6bbc5a4404a24fecbe73a3372d16569526b0cf34ebc195", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.11.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e5f36e3d736b99c7fee3e631333b8394ade4bafe9d96d35669fca2d81c2be928"}, "ed25519": {:hex, :ed25519, "1.4.1", "479fb83c3e31987c9cad780e6aeb8f2015fb5a482618cdf2a825c9aff809afc4", [:mix], [], "hexpm", "0dacb84f3faa3d8148e81019ca35f9d8dcee13232c32c9db5c2fb8ff48c80ec7"}, "equivalex": {:hex, :equivalex, "1.0.3", "170d9a82ae066e0020dfe1cf7811381669565922eb3359f6c91d7e9a1124ff74", [:mix], [], "hexpm", "46fa311adb855117d36e461b9c0ad2598f72110ad17ad73d7533c78020e045fc"}, + "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"}, "exceptional": {:hex, :exceptional, "2.1.3", "cb17cb9b7c4882e763b82db08ba317678157ca95970fae96b31b3c90f5960c3d", [:mix], [], "hexpm", "59d67ae2df6784e7a957087742ae9011f220c3d1523706c5cd7ee0741bca5897"}, + "file_system": {:hex, :file_system, "1.0.0", "b689cc7dcee665f774de94b5a832e578bd7963c8e637ef940cd44327db7de2cd", [:mix], [], "hexpm", "6752092d66aec5a10e662aefeed8ddb9531d79db0bc145bb8c40325ca1d8536d"}, + "finch": {:hex, :finch, "0.18.0", "944ac7d34d0bd2ac8998f79f7a811b21d87d911e77a786bc5810adb75632ada4", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "69f5045b042e531e53edc2574f15e25e735b522c37e2ddb766e15b979e03aa65"}, + "forecastle": {:hex, :forecastle, "0.1.2", "f8dab08962c7a33010ebd39182513129f17b8814aa16fa453ddd536040882daf", [:mix], [], "hexpm", "8efaeb2e7d0fa24c605605e42562e2dbb0ffd11dc1dd99ef77d78884536ce501"}, "gen_stage": {:hex, :gen_stage, "1.1.2", "b1656cd4ba431ed02c5656fe10cb5423820847113a07218da68eae5d6a260c23", [:mix], [], "hexpm", "9e39af23140f704e2b07a3e29d8f05fd21c2aaf4088ff43cb82be4b9e3148d02"}, - "gun": {:hex, :remedy_gun, "2.0.1", "0f0caed812ed9e4da4f144df2d5bf73b0a99481d395ecde990a3791decf321c6", [:rebar3], [{:cowlib, "~> 2.11.1", [hex: :remedy_cowlib, repo: "hexpm", optional: false]}], "hexpm", "b6685a85fbd12b757f86809be1b3d88fcef365b77605cd5aa34db003294c446e"}, - "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, + "gun": {:hex, :gun, "2.1.0", "b4e4cbbf3026d21981c447e9e7ca856766046eff693720ba43114d7f5de36e87", [:make, :rebar3], [{:cowlib, "2.13.0", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "52fc7fc246bfc3b00e01aea1c2854c70a366348574ab50c57dfe796d24a0101d"}, + "hpax": {:hex, :hpax, "1.0.0", "28dcf54509fe2152a3d040e4e3df5b265dcb6cb532029ecbacf4ce52caea3fd2", [:mix], [], "hexpm", "7f1314731d711e2ca5fdc7fd361296593fc2542570b3105595bb0bc6d0fad601"}, + "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "kcl": {:hex, :kcl, "1.4.2", "8b73a55a14899dc172fcb05a13a754ac171c8165c14f65043382d567922f44ab", [:mix], [{:curve25519, ">= 1.0.4", [hex: :curve25519, repo: "hexpm", optional: false]}, {:ed25519, "~> 1.3", [hex: :ed25519, repo: "hexpm", optional: false]}, {:poly1305, "~> 1.0", [hex: :poly1305, repo: "hexpm", optional: false]}, {:salsa20, "~> 1.0", [hex: :salsa20, repo: "hexpm", optional: false]}], "hexpm", "9f083dd3844d902df6834b258564a82b21a15eb9f6acdc98e8df0c10feeabf05"}, - "mime": {:hex, :mime, "2.0.3", "3676436d3d1f7b81b5a2d2bd8405f412c677558c81b1c92be58c00562bb59095", [:mix], [], "hexpm", "27a30bf0db44d25eecba73755acf4068cbfe26a4372f9eb3e4ea3a45956bff6b"}, - "nostrum": {:hex, :nostrum, "0.6.1", "aaad13e8e8ce8ace1f218685c6824972e7ea4f979e5ba3242a98f22bda52e605", [:mix], [{:certifi, "~> 2.8", [hex: :certifi, repo: "hexpm", optional: false]}, {:gen_stage, "~> 0.11 or ~> 1.0", [hex: :gen_stage, repo: "hexpm", optional: false]}, {:gun, "2.0.1", [hex: :remedy_gun, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:kcl, "~> 1.4", [hex: :kcl, repo: "hexpm", optional: false]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}], "hexpm", "27925a47e413766664928fbeb38c9887a7fd23066cdba831d5fd8241072bf76a"}, + "mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"}, + "mint": {:hex, :mint, "1.6.2", "af6d97a4051eee4f05b5500671d47c3a67dac7386045d87a904126fd4bbcea2e", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "5ee441dffc1892f1ae59127f74afe8fd82fda6587794278d924e4d90ea3d63f9"}, + "nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"}, + "nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"}, + "nosedrum": {:hex, :nosedrum, "0.5.0", "fccf1e6bc430f3464be56d9a9afb49d83ddcc12b9ef4abbcc48f1896ba4b019a", [:mix], [{:nostrum, "~> 0.7", [hex: :nostrum, repo: "hexpm", optional: false]}], "hexpm", "41e2963724d6dfe9b9469bda92a59236e21a2c3fda56048048c8dbdeddb7b81d"}, + "nostrum": {:hex, :nostrum, "0.10.0", "c54395970ee630cf577472f13baad1fb8eb02b7cd48868bc62b8a8a153d62cde", [:mix], [{:castle, "~> 0.3.0", [hex: :castle, repo: "hexpm", optional: false]}, {:certifi, "~> 2.13", [hex: :certifi, repo: "hexpm", optional: false]}, {:ezstd, "~> 1.1", [hex: :ezstd, repo: "hexpm", optional: true]}, {:gun, "~> 2.0", [hex: :gun, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}], "hexpm", "dd507bcd7c9bd7a5ec6ee69f9207f8101603caaedd14b204d3be3842d95be948"}, "ok": {:hex, :ok, "2.3.0", "0a3d513ec9038504dc5359d44e14fc14ef59179e625563a1a144199cdc3a6d30", [:mix], [], "hexpm", "f0347b3f8f115bf347c704184b33cf084f2943771273f2b98a3707a5fa43c4d5"}, "operator": {:hex, :operator, "0.2.1", "4572312bbd3e63a5c237bf15c3a7670d568e3651ea744289130780006e70e5f5", [:mix], [], "hexpm", "1990cc6dc651d7fff04636eef06fc64e6bc1da83a1da890c08ca3432e17e267a"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"}, "poly1305": {:hex, :poly1305, "1.0.4", "7cdc8961a0a6e00a764835918cdb8ade868044026df8ef5d718708ea6cc06611", [:mix], [{:chacha20, "~> 1.0", [hex: :chacha20, repo: "hexpm", optional: false]}, {:equivalex, "~> 1.0", [hex: :equivalex, repo: "hexpm", optional: false]}], "hexpm", "e14e684661a5195e149b3139db4a1693579d4659d65bba115a307529c47dbc3b"}, + "postgrex": {:hex, :postgrex, "0.19.0", "f7d50e50cb42e0a185f5b9a6095125a9ab7e4abccfbe2ab820ab9aa92b71dbab", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "dba2d2a0a8637defbf2307e8629cb2526388ba7348f67d04ec77a5d6a72ecfae"}, "quark": {:hex, :quark, "2.3.2", "066e0d431440d077684469967f54d732443ea2a48932e0916e974633e8b39c95", [:mix], [], "hexpm", "2f6423779b02afe7e3e4af3cfecfcd94572f2051664d4d8329ffa872d24b10a8"}, - "rustler": {:hex, :rustler, "0.26.0", "06a2773d453ee3e9109efda643cf2ae633dedea709e2455ac42b83637c9249bf", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:toml, "~> 0.6", [hex: :toml, repo: "hexpm", optional: false]}], "hexpm", "42961e9d2083d004d5a53e111ad1f0c347efd9a05cb2eb2ffa1d037cdc74db91"}, + "req": {:hex, :req, "0.5.6", "8fe1eead4a085510fe3d51ad854ca8f20a622aae46e97b302f499dfb84f726ac", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cfaa8e720945d46654853de39d368f40362c2641c4b2153c886418914b372185"}, + "rustler": {:hex, :rustler, "0.34.0", "e9a73ee419fc296a10e49b415a2eb87a88c9217aa0275ec9f383d37eed290c1c", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:toml, "~> 0.6", [hex: :toml, repo: "hexpm", optional: false]}], "hexpm", "1d0c7449482b459513003230c0e2422b0252245776fe6fd6e41cb2b11bd8e628"}, "salsa20": {:hex, :salsa20, "1.0.3", "fb900fc9b26b713a98618f3c6d6b6c35a5514477c6047caca8d03f3a70175ab0", [:mix], [], "hexpm", "91cbfa537f369d074a79f926f36a6c2ac24fba12cbadcb23aa04a759282887fe"}, + "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"}, "toml": {:hex, :toml, "0.7.0", "fbcd773caa937d0c7a02c301a1feea25612720ac3fa1ccb8bfd9d30d822911de", [:mix], [], "hexpm", "0690246a2478c1defd100b0c9b89b4ea280a22be9a7b313a8a058a2408a2fa70"}, "type_class": {:hex, :type_class, "1.2.8", "349db84be8c664e119efaae1a09a44b113bc8e81af1d032f4e3e38feef4fac32", [:mix], [{:exceptional, "~> 2.1", [hex: :exceptional, repo: "hexpm", optional: false]}], "hexpm", "bb93de2cacfd6f0ee43f4616f7a139816a73deba4ae8ee3364bcfa4abe3eef3e"}, "uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm", "c790593b4c3b601f5dc2378baae7efaf5b3d73c4c6456ba85759905be792f2ac"}, |
