From b301a3a726f9669dedcea8f52863c915f6d68a5f Mon Sep 17 00:00:00 2001 From: Daniel Kempkens Date: Mon, 21 Aug 2023 00:20:42 +0200 Subject: [PATCH] feat(chats): tags --- .gitignore | 1 + flake.nix | 4 +++ lib/bdfr_browser/chat.ex | 9 ++++++- mix.nix | 25 ++++++++++--------- .../20230820220618_add_chat_tags.exs | 9 +++++++ priv/templates/http/chats.eex | 8 ++++++ 6 files changed, 43 insertions(+), 13 deletions(-) create mode 100644 priv/repo/migrations/20230820220618_add_chat_tags.exs diff --git a/.gitignore b/.gitignore index 5cd453b..374eb57 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ erl_crash.dump /tags* /xref_graph.dot /xref_graph.png +/scripts diff --git a/flake.nix b/flake.nix index a609d75..6de6099 100644 --- a/flake.nix +++ b/flake.nix @@ -98,6 +98,9 @@ erlang elixir postgres + + pkgs.ruby_3_2 + pkgs.rubyPackages_3_2.nokogiri ] ++ lib.optionals isDarwin (with pkgs.darwin.apple_sdk.frameworks; [ CoreFoundation CoreServices @@ -138,6 +141,7 @@ settings = { environment = { BDFR_BROWSER_BASE_DIRECTORY = "/Volumes/MediaScraper/Reddit"; + BDFR_BROWSER_CONFIG_FILE = "./priv/config.yml"; BDFR_BROWSER_REPO_USER = db-user; BDFR_BROWSER_REPO_HOST = db-host; RELEASE_DISTRIBUTION = "none"; diff --git a/lib/bdfr_browser/chat.ex b/lib/bdfr_browser/chat.ex index c6106a7..70edf40 100644 --- a/lib/bdfr_browser/chat.ex +++ b/lib/bdfr_browser/chat.ex @@ -9,6 +9,7 @@ defmodule BdfrBrowser.Chat do schema "chats" do field :accounts, {:array, :string} + field :tags, {:array, :string}, default: [] has_many :messages, Message end @@ -16,7 +17,13 @@ defmodule BdfrBrowser.Chat do def listing do from(c in __MODULE__, left_join: m in assoc(c, :messages), - select: %{id: c.id, accounts: c.accounts, num_messages: count(m.id), latest_message: max(m.posted_at)}, + select: %{ + id: c.id, + accounts: c.accounts, + num_messages: count(m.id), + latest_message: max(m.posted_at), + tags: c.tags + }, order_by: [desc: max(m.posted_at)], group_by: c.id ) diff --git a/mix.nix b/mix.nix index 43b68d1..a17dbc4 100644 --- a/mix.nix +++ b/mix.nix @@ -1,4 +1,4 @@ -{ lib, beamPackages, overrides ? (x: y: {}) }: +{ lib, beamPackages, overrides ? (x: y: { }) }: let buildRebar3 = lib.makeOverridable beamPackages.buildRebar3; @@ -44,7 +44,7 @@ let sha256 = "1c4dgi8canscyjgddp22mjc69znvwy44wk3r7jrl2wvs6vv76fqn"; }; - beamDeps = []; + beamDeps = [ ]; }; db_connection = buildMix rec { @@ -70,7 +70,7 @@ let sha256 = "1k7z418b6cj977wswpxsk5844xrxc1smaiqsmrqpf3pdjzsfbksk"; }; - beamDeps = []; + beamDeps = [ ]; }; earmark = buildMix rec { @@ -96,7 +96,7 @@ let sha256 = "13qvlqnii8g6bcz6cl330vjwaan7jy30g1app3yvjncvf8rnhlid"; }; - beamDeps = []; + beamDeps = [ ]; }; ecto = buildMix rec { @@ -135,7 +135,7 @@ let sha256 = "1p0myxmnjjds8bbg69dd6fvhk8q3n7lb78zd4qvmjajnzgdmw6a1"; }; - beamDeps = []; + beamDeps = [ ]; }; jason = buildMix rec { @@ -161,7 +161,7 @@ let sha256 = "0p50h0ki8ay5sraiqxiajgwy1829bvyagj65bj9wjny4cnin83fs"; }; - beamDeps = []; + beamDeps = [ ]; }; plug = buildMix rec { @@ -200,7 +200,7 @@ let sha256 = "0hnqgzc3zas7j7wycgnkkdhaji5farkqccy2n4p1gqj5ccfrlm16"; }; - beamDeps = []; + beamDeps = [ ]; }; postgrex = buildMix rec { @@ -226,7 +226,7 @@ let sha256 = "1rfz5ld54pkd2w25jadyznia2vb7aw9bclck21fizargd39wzys9"; }; - beamDeps = []; + beamDeps = [ ]; }; telemetry = buildRebar3 rec { @@ -239,7 +239,7 @@ let sha256 = "1mgyx9zw92g6w8fp9pblm3b0bghwxwwcbslrixq23ipzisfwxnfs"; }; - beamDeps = []; + beamDeps = [ ]; }; typed_struct = buildMix rec { @@ -252,7 +252,7 @@ let sha256 = "0v8v3l8j7g3ran3f9gc2nc1mkj6kwfdr6kshm2cf3r0zlv1xa2y5"; }; - beamDeps = []; + beamDeps = [ ]; }; yamerl = buildRebar3 rec { @@ -265,7 +265,7 @@ let sha256 = "0vjf9gnchvh4qfykrxf0jw0didvfrx54wdm26z41s1gicclxnsil"; }; - beamDeps = []; + beamDeps = [ ]; }; yaml_elixir = buildMix rec { @@ -281,5 +281,6 @@ let beamDeps = [ yamerl ]; }; }; -in self +in +self diff --git a/priv/repo/migrations/20230820220618_add_chat_tags.exs b/priv/repo/migrations/20230820220618_add_chat_tags.exs new file mode 100644 index 0000000..3ba6807 --- /dev/null +++ b/priv/repo/migrations/20230820220618_add_chat_tags.exs @@ -0,0 +1,9 @@ +defmodule BdfrBrowser.Repo.Migrations.AddChatTags do + use Ecto.Migration + + def change do + alter table("chats") do + add :tags, {:array, :string}, default: [] + end + end +end diff --git a/priv/templates/http/chats.eex b/priv/templates/http/chats.eex index c37fc9d..5c48098 100644 --- a/priv/templates/http/chats.eex +++ b/priv/templates/http/chats.eex @@ -9,6 +9,14 @@
<%= chat.num_messages %> message(s) - <%= DateTime.to_iso8601(chat.latest_message) %>
+ + <%= if length(chat.tags) > 0 do %> +

+ <%= for tag <- chat.tags do %> + <%= tag %> + <% end %> +

+ <% end %> <% end %>