fix: unlike noop stale struct + likes floor at 0
- unlike noop now reloads tweet from DB (same fix as like noop from prev loop) - decrement_likes uses GREATEST(likes - 1, 0) to prevent negative counts - add fix_plan.md to track remaining work Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -148,7 +148,7 @@ defmodule Mixer.Posts.Tweet do
|
||||
decrement_likes(tweet, context.actor)
|
||||
|
||||
{:noop, _like} ->
|
||||
{:ok, tweet}
|
||||
Ash.get(__MODULE__, tweet.id, authorize?: false)
|
||||
|
||||
{:error, error} ->
|
||||
{:error, error}
|
||||
@@ -166,7 +166,7 @@ defmodule Mixer.Posts.Tweet do
|
||||
update :decrement_likes do
|
||||
accept []
|
||||
require_atomic? false
|
||||
change atomic_update(:likes, expr(likes - 1))
|
||||
change atomic_update(:likes, expr(fragment("GREATEST(? - 1, 0)", likes)))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user