From d9b114f9ead84500a5687dca99c9e65cd0ce3552 Mon Sep 17 00:00:00 2001 From: swag Date: Fri, 31 Dec 2021 23:45:21 -0500 Subject: [PATCH] Back-end stuff to get the URL field working --- guestbook-ng.pl | 5 +++-- lib/GuestbookNg/Model/Message.pm | 18 +++++++++++++----- migrations/4/down.sql | 2 ++ migrations/4/up.sql | 2 ++ t/basic.t | 1 + 5 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 migrations/4/down.sql create mode 100644 migrations/4/up.sql diff --git a/guestbook-ng.pl b/guestbook-ng.pl index de4881b..16cdaa4 100755 --- a/guestbook-ng.pl +++ b/guestbook-ng.pl @@ -63,10 +63,11 @@ get '/' => sub ($c) { any [qw{GET POST}], '/sign' => sub ($c) { if ($c->req->method() eq 'POST' && $c->param('message')) { my $name = $c->param('name') || 'Anonymous'; + my $url = $c->param('url'); my $message = $c->param('message'); my $answer = $c->param('answer'); - $c->message->create_post($name, $message) if $answer; + $c->message->create_post($name, $message, $url) if $answer; $c->redirect_to('index'); } else { @@ -93,7 +94,7 @@ app->secrets(app->config->{'secrets'}) || die $@; app->message->max_posts(app->config->{'max_posts'}) if app->config->{'max_posts'}; -app->pg->migrations->from_dir('migrations')->migrate(3); +app->pg->migrations->from_dir('migrations')->migrate(4); app->asset->store->paths(['assets']); app->asset->process('swagg.css', 'css/swagg.css'); diff --git a/lib/GuestbookNg/Model/Message.pm b/lib/GuestbookNg/Model/Message.pm index 1cca925..1b47c6e 100644 --- a/lib/GuestbookNg/Model/Message.pm +++ b/lib/GuestbookNg/Model/Message.pm @@ -38,11 +38,19 @@ sub get_posts($self, $this_page = undef) { } } -sub create_post($self, $name, $message) { - $self->pg->db->query(<<~'END_SQL', $name, $message) - INSERT INTO messages (message_date, visitor_name, message) - VALUES (NOW(), ?, ?); - END_SQL +sub create_post($self, $name, $message, $url = undef) { + if ($url) { + $self->pg->db->query(<<~'END_SQL', $name, $url, $message) + INSERT INTO messages (message_date, visitor_name, homepage_url, message) + VALUES (NOW(), ?, ?, ?); + END_SQL + } + else { + $self->pg->db->query(<<~'END_SQL', $name, $message) + INSERT INTO messages (message_date, visitor_name, message) + VALUES (NOW(), ?, ?); + END_SQL + } } sub max_posts($self, $value = undef) { diff --git a/migrations/4/down.sql b/migrations/4/down.sql new file mode 100644 index 0000000..0358156 --- /dev/null +++ b/migrations/4/down.sql @@ -0,0 +1,2 @@ +ALTER TABLE messages + DROP COLUMN homepage_url; diff --git a/migrations/4/up.sql b/migrations/4/up.sql new file mode 100644 index 0000000..528a75e --- /dev/null +++ b/migrations/4/up.sql @@ -0,0 +1,2 @@ +ALTER TABLE messages + ADD homepage_url VARCHAR(256); diff --git a/t/basic.t b/t/basic.t index 7ad1658..f0256cb 100644 --- a/t/basic.t +++ b/t/basic.t @@ -10,6 +10,7 @@ my $script = curfile->dirname->sibling('guestbook-ng.pl'); my $t = Test::Mojo->new($script); my %form = ( name => 'swagg boi', + url => 'http://localhost', message => 'Ayy... lmao', answer => 'false' );