+sub changeDiscordId : Local {
+ my ( $self, $c ) = @_;
+ my $dbh = $c->model;
+
+ my $discord_id = $c->req->param('discord_id');
+
+ if ($discord_id =~ /^\s*$/) {
+ my $update = $dbh->prepare(q{
+UPDATE users SET discord_id = NULL WHERE uid = $1;
+ });
+ $update->execute($c->user->id);
+ $c->flash(error => 'discord id cleared');
+ $c->res->redirect($c->uri_for(''));
+ return,
+ }
+
+ eval{
+ my $update = $dbh->prepare(q{
+UPDATE users SET discord_id = $2 WHERE uid = $1;
+ });
+ $update->execute($c->user->id,$discord_id);
+ };
+ if($@){
+ if($@ =~ /duplicate key value violates unique constraint/){
+ $c->flash(discord_id => $discord_id);
+ $c->flash(error => 'Someone else is using this discord id, duplicate account?');
+ }else{
+ die $@;
+ }
+ }
+ $c->res->redirect($c->uri_for(''));
+}
+