filters: Change to primary_key(user, filter_id)

This commit is contained in:
Haelwenn (lanodan) Monnier 2018-10-12 18:45:18 +02:00
parent 117e005409
commit b02385004c
No known key found for this signature in database
GPG Key ID: D5B7A8E43C997DEE
2 changed files with 24 additions and 11 deletions

View File

@ -3,9 +3,10 @@ defmodule Pleroma.Filter do
import Ecto.{Changeset, Query}
alias Pleroma.{User, Repo, Activity}
@primary_key false
schema "filters" do
belongs_to(:user, Pleroma.User)
field(:filter_id, :integer)
belongs_to(:user, Pleroma.User, primary_key: true)
field(:filter_id, :id, primary_key: true)
field(:hide, :boolean, default: false)
field(:whole_word, :boolean, default: true)
field(:phrase, :string)
@ -40,18 +41,10 @@ defmodule Pleroma.Filter do
Repo.insert(filter)
end
def delete(%Pleroma.Filter{id: filter_key} = filter) when is_number(filter_key) do
def delete(%Pleroma.Filter{} = filter) do
Repo.delete(filter)
end
def delete(%Pleroma.Filter{id: filter_key} = filter) when is_nil(filter_key) do
%Pleroma.Filter{id: id} = get(filter.filter_id, %{id: filter.user_id})
filter
|> Map.put(:id, id)
|> Repo.delete()
end
def update(%Pleroma.Filter{} = filter) do
destination = Map.from_struct(filter)

View File

@ -0,0 +1,20 @@
defmodule Pleroma.Repo.Migrations.FilterPrimaryKey do
use Ecto.Migration
def change do
# FIXME: Avoid dropping the table
drop table(:filters)
create table(:filters, primary_key: false) do
add :user_id, references(:users, on_delete: :delete_all), primary_key: true
add :filter_id, :id, primary_key: true
add :hide, :boolean
add :phrase, :string
add :context, {:array, :string}
add :expires_at, :datetime
add :whole_word, :boolean
timestamps()
end
end
end