[#3213] Misc. tweaks: proper upsert in Hashtag, better feature toggle management.
This commit is contained in:
parent
a98c4423f3
commit
77f3da0358
8 changed files with 30 additions and 31 deletions
|
|
@ -111,4 +111,8 @@ defmodule Pleroma.Config do
|
|||
end
|
||||
)
|
||||
end
|
||||
|
||||
def feature_enabled?(feature_name) do
|
||||
get([:features, feature_name]) not in [nil, false, :disabled, :auto]
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -27,19 +27,15 @@ defmodule Pleroma.Hashtag do
|
|||
|> String.trim()
|
||||
end
|
||||
|
||||
def get_by_name(name) do
|
||||
Repo.get_by(Hashtag, name: normalize_name(name))
|
||||
end
|
||||
def get_or_create_by_name(name) do
|
||||
changeset = changeset(%Hashtag{}, %{name: name})
|
||||
|
||||
def get_or_create_by_name(name) when is_bitstring(name) do
|
||||
with %Hashtag{} = hashtag <- get_by_name(name) do
|
||||
{:ok, hashtag}
|
||||
else
|
||||
_ ->
|
||||
%Hashtag{}
|
||||
|> changeset(%{name: name})
|
||||
|> Repo.insert()
|
||||
end
|
||||
Repo.insert(
|
||||
changeset,
|
||||
on_conflict: [set: [name: get_field(changeset, :name)]],
|
||||
conflict_target: :name,
|
||||
returning: true
|
||||
)
|
||||
end
|
||||
|
||||
def get_or_create_by_names(names) when is_list(names) do
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ defmodule Pleroma.Migrators.HashtagsTableMigrator do
|
|||
defdelegate put_stat(key, value), to: State, as: :put_data_key
|
||||
defdelegate increment_stat(key, increment), to: State, as: :increment_data_key
|
||||
|
||||
@feature_config_path [:database, :improved_hashtag_timeline]
|
||||
@feature_config_path [:features, :improved_hashtag_timeline]
|
||||
@reg_name {:global, __MODULE__}
|
||||
|
||||
def whereis, do: GenServer.whereis(@reg_name)
|
||||
|
|
@ -296,16 +296,12 @@ defmodule Pleroma.Migrators.HashtagsTableMigrator do
|
|||
end
|
||||
|
||||
defp on_complete(data_migration) do
|
||||
cond do
|
||||
data_migration.feature_lock ->
|
||||
:noop
|
||||
|
||||
not is_nil(feature_state()) ->
|
||||
:noop
|
||||
|
||||
true ->
|
||||
Config.put(@feature_config_path, true)
|
||||
:ok
|
||||
if data_migration.feature_lock || feature_state() == :disabled do
|
||||
Logger.warn("#{__MODULE__}: migration complete but feature is locked; consider enabling.")
|
||||
:noop
|
||||
else
|
||||
Config.put(@feature_config_path, :enabled)
|
||||
:ok
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1273,7 +1273,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
|
|||
|> exclude_invisible_actors(opts)
|
||||
|> exclude_visibility(opts)
|
||||
|
||||
if Config.get([:database, :improved_hashtag_timeline]) do
|
||||
if Config.feature_enabled?(:improved_hashtag_timeline) do
|
||||
query
|
||||
|> restrict_hashtag_any(opts)
|
||||
|> restrict_hashtag_all(opts)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue