Skip to content

Commit

Permalink
revert(models/post): reset changes for specifying created_at
Browse files Browse the repository at this point in the history
  • Loading branch information
unenglishable committed Sep 9, 2024
1 parent 33aaa02 commit f402c55
Showing 1 changed file with 22 additions and 44 deletions.
66 changes: 22 additions & 44 deletions lib/epochtalk_server/models/post.ex
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,8 @@ defmodule EpochtalkServer.Models.Post do
@doc """
Create changeset for `Post` model
"""
@spec create_changeset(
post :: t(),
attrs :: map() | nil,
now_override :: NaiveDateTime.t() | nil
) :: Ecto.Changeset.t()
# credo:disable-for-next-line
def create_changeset(post, attrs, now_override \\ nil) do
@spec create_changeset(post :: t(), attrs :: map() | nil) :: Ecto.Changeset.t()
def create_changeset(post, attrs) do
now = NaiveDateTime.utc_now()

# set default values and timestamps
Expand Down Expand Up @@ -170,20 +165,28 @@ defmodule EpochtalkServer.Models.Post do
Repo.transaction(fn ->
post_cs = create_changeset(%Post{}, post_attrs)

create_post_shared(post_cs)
end)
end
case Repo.insert(post_cs) do
# changeset valid, insert success, update metadata threads and return thread
{:ok, db_post} ->
# Increment user post count
Profile.increment_post_count(db_post.user_id)

@doc """
Creates a new `Post` in the database, used during testing. Allows modification of created_at
"""
@spec create_for_test(post_attrs :: map(), timestamp :: NaiveDateTime.t()) ::
{:ok, post :: t()} | {:error, Ecto.Changeset.t()}
def create_for_test(post_attrs, timestamp) do
Repo.transaction(fn ->
post_cs = create_changeset(%Post{}, post_attrs, timestamp)
# Set thread created_at and updated_at
Thread.set_timestamps(db_post.thread_id)

# Set post position
Post.set_position_using_thread(db_post.id, db_post.thread_id)

# Increment thread post ocunt
Thread.increment_post_count(db_post.thread_id)

# Requery post with position and thread slug info
Repo.one(from p in Post, where: p.id == ^db_post.id, preload: [:thread])

create_post_shared(post_cs)
# changeset error
{:error, cs} ->
Repo.rollback(cs)
end
end)
end

Expand Down Expand Up @@ -494,29 +497,4 @@ defmodule EpochtalkServer.Models.Post do
|> Map.delete("user_id")
|> Map.delete("title")
end

defp create_post_shared(post_cs) do
case Repo.insert(post_cs) do
# changeset valid, insert success, update metadata threads and return thread
{:ok, db_post} ->
# Increment user post count
Profile.increment_post_count(db_post.user_id)

# Set thread created_at and updated_at
Thread.set_timestamps(db_post.thread_id)

# Set post position
Post.set_position_using_thread(db_post.id, db_post.thread_id)

# Increment thread post ocunt
Thread.increment_post_count(db_post.thread_id)

# Requery post with position and thread slug info
Repo.one(from p in Post, where: p.id == ^db_post.id, preload: [:thread])

# changeset error
{:error, cs} ->
Repo.rollback(cs)
end
end
end

0 comments on commit f402c55

Please sign in to comment.