projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[#3213] `hashtags`: altered `name` type to `text`. `hashtags_objects`: removed unused...
[akkoma]
/
lib
/
pleroma
/
hashtag.ex
diff --git
a/lib/pleroma/hashtag.ex
b/lib/pleroma/hashtag.ex
index a6d033816191498af1a47085f0e063458cbf3ae4..e9d143fb18359b553cb4f6e8b959e5cd7de1653b 100644
(file)
--- a/
lib/pleroma/hashtag.ex
+++ b/
lib/pleroma/hashtag.ex
@@
-21,10
+21,14
@@
defmodule Pleroma.Hashtag do
timestamps()
end
timestamps()
end
+ def normalize_name(name) do
+ name
+ |> String.downcase()
+ |> String.trim()
+ end
+
def get_by_name(name) do
def get_by_name(name) do
- from(h in Hashtag)
- |> where([h], fragment("name = ?::citext", ^String.downcase(name)))
- |> Repo.one()
+ Repo.get_by(Hashtag, name: normalize_name(name))
end
def get_or_create_by_name(name) when is_bitstring(name) do
end
def get_or_create_by_name(name) when is_bitstring(name) do
@@
-39,7
+43,7
@@
defmodule Pleroma.Hashtag do
end
def get_or_create_by_names(names) when is_list(names) do
end
def get_or_create_by_names(names) when is_list(names) do
- names = Enum.map(names, &
String.downcas
e/1)
+ names = Enum.map(names, &
normalize_nam
e/1)
timestamp = NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second)
structs =
timestamp = NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second)
structs =
@@
-53,10
+57,12
@@
defmodule Pleroma.Hashtag do
try do
with {:ok, %{query_op: hashtags}} <-
Multi.new()
try do
with {:ok, %{query_op: hashtags}} <-
Multi.new()
- |> Multi.insert_all(:insert_all_op, Hashtag, structs, on_conflict: :nothing)
+ |> Multi.insert_all(:insert_all_op, Hashtag, structs,
+ on_conflict: :nothing,
+ conflict_target: :name
+ )
|> Multi.run(:query_op, fn _repo, _changes ->
|> Multi.run(:query_op, fn _repo, _changes ->
- {:ok,
- Repo.all(from(ht in Hashtag, where: ht.name in fragment("?::citext[]", ^names)))}
+ {:ok, Repo.all(from(ht in Hashtag, where: ht.name in ^names))}
end)
|> Repo.transaction() do
{:ok, hashtags}
end)
|> Repo.transaction() do
{:ok, hashtags}
@@
-71,7
+77,7
@@
defmodule Pleroma.Hashtag do
def changeset(%Hashtag{} = struct, params) do
struct
|> cast(params, [:name])
def changeset(%Hashtag{} = struct, params) do
struct
|> cast(params, [:name])
- |> update_change(:name, &
String.downcas
e/1)
+ |> update_change(:name, &
normalize_nam
e/1)
|> validate_required([:name])
|> unique_constraint(:name)
end
|> validate_required([:name])
|> unique_constraint(:name)
end