Skip to content

Commit

Permalink
Handled case for users with a lot of t1 not to get similar new_referr…
Browse files Browse the repository at this point in the history
…ed_by for all of them, but distribute them more randomly.
  • Loading branch information
ice-myles committed Feb 12, 2024
1 parent 58a1d0c commit 3b04fa5
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 28 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ require (

require (
cloud.google.com/go v0.112.0 // indirect
cloud.google.com/go/compute v1.23.4 // indirect
cloud.google.com/go/compute v1.24.0 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
cloud.google.com/go/firestore v1.14.0 // indirect
cloud.google.com/go/iam v1.1.6 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
cloud.google.com/go/compute v1.23.4 h1:EBT9Nw4q3zyE7G45Wvv3MzolIrCJEuHys5muLY0wvAw=
cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI=
cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg=
cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40=
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
cloud.google.com/go/firestore v1.14.0 h1:8aLcKnMPoldYU3YHgu4t2exrKhLQkqaXAGqT0ljrFVw=
Expand Down
51 changes: 26 additions & 25 deletions users/users_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,37 +94,38 @@ func (r *repository) updateReferredByForAllT1Referrals(ctx context.Context, user
return errors.Wrap(ctx.Err(), "context failed")
}
sql := `
WITH randomized AS (
SELECT id, referred_by, created_at FROM users
WHERE id != 'bogus'
WITH randomized AS (
SELECT id, referred_by, created_at, hash_code FROM users
WHERE id != 'bogus'
AND id != 'icenetwork'
AND username != id
AND referred_by != id
AND id != $1
AND referred_by != $1
ORDER BY random()
)
SELECT ( SELECT X.ID
FROM ( SELECT X.ID
FROM (
SELECT r.id
FROM randomized r
WHERE r.id != u.id
AND r.referred_by != u.id
AND r.created_at < u.created_at
LIMIT 1
) X
UNION ALL
SELECT u.id AS ID
) X
LIMIT 1
) new_referred_by,
u.ID as id
FROM users u
WHERE u.referred_by = $1
AND u.id != $1`
)
SELECT (SELECT X.ID
FROM ( SELECT X.ID
FROM (
SELECT r.id
FROM randomized r
WHERE r.id != u.id
AND r.referred_by != u.id
AND r.created_at < u.created_at
AND MOD(r.hash_code, (floor(random()*1000)+1)::bigint) = 0
LIMIT 1
) X
UNION ALL
SELECT u.id AS ID
) X
LIMIT 1
) new_referred_by,
u.ID as id
FROM users u
WHERE u.referred_by = $1
AND u.id != $1`
type resp struct {
NewReferredBy UserID
ID UserID `db:"id"`
Expand Down

0 comments on commit 3b04fa5

Please sign in to comment.