1
0
mirror of https://github.com/mgerb/classic-wow-forums synced 2026-01-10 17:12:48 +00:00

server - adjust rate limiter - reply/thread mod update

This commit is contained in:
2018-01-25 19:57:36 -06:00
parent d6ec930370
commit 605e4ba94b
9 changed files with 121 additions and 23 deletions

View File

@@ -10,8 +10,8 @@ defmodule MyApp.Data.Reply do
field :user_id, :integer # references :user
field :thread_id, :integer # references :thread
field :content, :string
field :edited, :boolean, default: false
field :quote_id, :integer
field :edited, :boolean, default: false
field :hidden, :boolean, default: false
has_one :user, Data.User, foreign_key: :id, references: :user_id
timestamps(type: :utc_datetime)
@@ -35,11 +35,20 @@ defmodule MyApp.Data.Reply do
@spec insert(map) :: {:ok, map} | {:error, map}
def insert(params) do
{:ok, data} = insert_changeset(%Data.Reply{}, params)
|> Repo.insert
|> Data.Util.process_insert_or_update
|> update_thread_new_reply
{:ok, Map.drop(data, [:user])} # drop user because we can't encode it if it's not preloaded
{:ok, data} = Repo.transaction(fn ->
thread = Repo.get_by(Data.Thread, %{ id: Map.get(params, "thread_id")})
if !thread.locked do
{:ok, data} = insert_changeset(%Data.Reply{}, params)
|> Repo.insert
|> Data.Util.process_insert_or_update
|> update_thread_new_reply
{:ok, Map.drop(data, [:user])} # drop user because we can't encode it if it's not preloaded
else
{:error, "thread locked"}
end
end)
data
end
defp update_thread_new_reply({:error, error}), do: {:error, error}
@@ -75,4 +84,15 @@ defmodule MyApp.Data.Reply do
end
end
@spec mod_update(map) :: {:ok, any}
def mod_update(params) do
Repo.transaction(fn ->
reply = Repo.get_by(Data.Reply, %{ id: Map.get(params, "id")})
reply
|> cast(params, [:hidden])
|> Repo.update
end)
end
end