diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index d3f9888..59b0911 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -73,7 +73,7 @@ jobs: # extract artifacts tar -xzf release.tar.gz # save metrics and stop the bot - current_release/bin/plantid_discord_bot rpc "PlantidDiscordBot.Metrics.write()" + current_release/bin/plantid_discord_bot rpc "PlantidDiscordBot.Metrics.backup()" current_release/bin/plantid_discord_bot stop || true # switch releases rm -rf old_release diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 1b64569..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,28 +0,0 @@ -**0.2.1** - -- Removed `No alternatives found` text - -**0.2.0** - -- Implemented the ability to ID attachments without using application commands -- Wording changes for plant database links -- `Threat Status` changed to `Conservation Status` - -**0.1.4** - -- Added first and last request date to metrics - -**0.1.3** - -- Typo corrections in README.md -- Metrics as state, written to disk every hour - -**0.1.2** - -- bug fixes around `Threat Status`, choosing to not display when no IUCU data is available - -**0.1.1** - -- removed logger backend code in favour of `LoggerWebhookBackend` - -**0.1.0 - Initial Release** diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 8d2441e..0000000 --- a/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -ARG ELIXIR="1.16.2" -ARG ERLANG="26.0.2" -ARG DEBIAN_VERSION="buster-20240513-slim" - -# Step 1: Build release -FROM hexpm/elixir:${ELIXIR}-erlang-${ERLANG}-debian-${DEBIAN_VERSION} AS build - -WORKDIR /plantid_discord_bot - -RUN MIX_ENV=prod - -RUN mix local.hex --force && \ - mix local.rebar --force - -COPY mix.exs mix.lock ./ -COPY config config -COPY lib lib - -RUN mix deps.get --only prod -RUN MIX_ENV=prod mix release - -# Step 2: Create app image -FROM debian:${DEBIAN_VERSION} - -WORKDIR /plantid_discord_bot - -RUN apt-get update -y && apt-get install -y openssl locales - -COPY \ - --from=build \ - --chown=nobody:root \ - /plantid_discord_bot/_build/prod/rel/plantid_discord_bot ./ - -RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen -ENV LANG="en_US.UTF-8" -ENV LANGUAGE="en_US:en" -ENV LC_ALL="en_US.UTF-8" - -EXPOSE 4321 - -CMD ["/plantid_discord_bot/bin/plantid_discord_bot", "start"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 4aec384..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - app: - build: - context: . - dockerfile: Dockerfile - container_name: plantid_discord_bot - environment: - - MIX_ENV=prod - - PLANTNET_API_KEY=${PLANTNET_API_KEY} - - DISCORD_TOKEN=${DISCORD_TOKEN} - - LOGS_DISCORD_WEBHOOK_URL=${LOGS_DISCORD_WEBHOOK_URL} - ports: - - "4321:4321" - volumes: - - appdata:/plantid_discord_bot - -volumes: - appdata: \ No newline at end of file diff --git a/lib/metrics.ex b/lib/metrics.ex index c1b8fbd..d0866a1 100644 --- a/lib/metrics.ex +++ b/lib/metrics.ex @@ -1,4 +1,7 @@ defmodule PlantIdDiscordBot.Metrics do + @moduledoc """ + API for managing metrics for the bot. + """ alias PlantIdDiscordBot.Metrics.Requests alias PlantIdDiscordBot.RateLimiter diff --git a/test/metrics_test.exs b/test/metrics_test.exs index 25d2caa..4f98236 100644 --- a/test/metrics_test.exs +++ b/test/metrics_test.exs @@ -2,25 +2,27 @@ defmodule PlantIdDiscordBot.MetricsTest do use ExUnit.Case doctest PlantIdDiscordBot.Metrics + alias PlantIdDiscordBot.Metrics + test "put multiple entries into state" do - PlantIdDiscordBot.Metrics.reset() - PlantIdDiscordBot.Metrics.put(123, "Test Guild 1") - PlantIdDiscordBot.Metrics.put(321, "Test Guild 2") + Metrics.Requests.reset() + Metrics.increase_request_count(123, "Test Guild 1") + Metrics.increase_request_count(321, "Test Guild 2") keys = - PlantIdDiscordBot.Metrics.get_all() + Metrics.requests() |> Map.keys() assert length(keys) == 2 - %PlantIdDiscordBot.Metrics{ + %Metrics.Requests{ guild_id: guild_id1, guild_name: guild_name1, first_request_at: first_request_at1, last_request_at: last_request_at1, total_requests: total_requests1 } = - PlantIdDiscordBot.Metrics.get(123) + Metrics.requests(123) assert guild_id1 == 123 assert guild_name1 == "Test Guild 1" @@ -28,14 +30,14 @@ defmodule PlantIdDiscordBot.MetricsTest do assert %DateTime{} = last_request_at1 assert total_requests1 == 1 - %PlantIdDiscordBot.Metrics{ + %Metrics.Requests{ guild_id: guild_id2, guild_name: guild_name2, first_request_at: first_request_at2, last_request_at: last_request_at2, total_requests: total_requests2 } = - PlantIdDiscordBot.Metrics.get(321) + Metrics.requests(321) assert guild_id2 == 321 assert guild_name2 == "Test Guild 2" @@ -45,18 +47,18 @@ defmodule PlantIdDiscordBot.MetricsTest do end test "update requests for a guild" do - PlantIdDiscordBot.Metrics.reset() - PlantIdDiscordBot.Metrics.put(123, "Test Guild 1") - PlantIdDiscordBot.Metrics.put(123, "Test Guild 1") + Metrics.Requests.reset() + Metrics.increase_request_count(123, "Test Guild 1") + Metrics.increase_request_count(123, "Test Guild 1") - %PlantIdDiscordBot.Metrics{ + %Metrics.Requests{ guild_id: guild_id, guild_name: guild_name, first_request_at: first_request_at, last_request_at: last_request_at, total_requests: total_requests } = - PlantIdDiscordBot.Metrics.get(123) + Metrics.requests(123) assert guild_id == 123 assert guild_name == "Test Guild 1"