A user can only vote once but can change their vote.
The challenge I’m having is if the user is the first to upvote or downvote, Upvotes = 1 or -1. If they change their vote and the result of that initial change is 0 (i.e. no one else has voted yet), they should be able to change the vote from 1 to -1 or vice versa.
At the moment, Current User is stored against a record with 0 Upvotes which is incorrect but illustrates the User has changed their initial vote.