diff --git a/lib/invites_repo.rb b/lib/invites_repo.rb index a760988eb6143850356ef7f035f6ce5f4c17f1e1..f5713f17333c8e4dc19b497d10b986e571d40315 100644 --- a/lib/invites_repo.rb +++ b/lib/invites_repo.rb @@ -53,6 +53,7 @@ class InvitesRepo CLAIM_SQL = <<~SQL UPDATE invites SET used_by_id=$1, used_at=LOCALTIMESTAMP WHERE code=$2 AND used_by_id IS NULL + RETURNING creator_id SQL def claim_code(customer_id, code, &blk) @@ -60,10 +61,10 @@ class InvitesRepo guard_too_many_tries(customer_id).then do @db.transaction do - valid = @db.exec(CLAIM_SQL, [customer_id, code]).cmd_tuples.positive? - invalid_code(customer_id, code).sync unless valid + claimed = @db.exec(CLAIM_SQL, [customer_id, code]).first + invalid_code(customer_id, code).sync unless claimed - blk.call + blk.call(claimed) end end end diff --git a/test/test_registration.rb b/test/test_registration.rb index 90e1d1261dbf6502b1497648c2d37fb1a833e237..38610da3c67c56ece2aab091919d2f05fdf07b1f 100644 --- a/test/test_registration.rb +++ b/test/test_registration.rb @@ -281,7 +281,7 @@ class RegistrationTest < Minitest::Test Registration::Activation::DB.expect(:transaction, []) { |&blk| blk.call } Registration::Activation::DB.expect( :exec, - OpenStruct.new(cmd_tuples: 1), + [{ creator_id: "creator" }], [String, ["test", "123"]] ) Registration::Activation::Finish.expect(