Implement is_spam column
This commit is contained in:
parent
2845fd7499
commit
26aa2ba19f
|
@ -51,4 +51,4 @@ Add the `-v` option for more verbose output
|
|||
|
||||
1. Input validation
|
||||
1. Filter URLs out of message body
|
||||
1. Add column to tag posts as spam or hidden
|
||||
1. Set date in the DB rather than the model
|
||||
|
|
|
@ -67,14 +67,14 @@ any [qw{GET POST}], '/sign' => sub ($c) {
|
|||
my $name = $c->param('name') || 'Anonymous';
|
||||
my $url = $c->param('url');
|
||||
my $message = $c->param('message');
|
||||
my $answer = $c->param('answer');
|
||||
my $spam = $c->param('answer') ? 0 : 1;
|
||||
|
||||
if ($message && $answer) {
|
||||
$c->message->create_post($name, $message, $url);
|
||||
if ($message) {
|
||||
$c->message->create_post($name, $message, $url, $spam);
|
||||
$c->redirect_to('index');
|
||||
}
|
||||
else {
|
||||
$c->flash(error => 'Uh-oh!! Please try again.');
|
||||
$c->flash(error => 'Message cannot be blank');
|
||||
$c->redirect_to('sign');
|
||||
}
|
||||
}
|
||||
|
@ -106,7 +106,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(4);
|
||||
app->pg->migrations->from_dir('migrations')->migrate(5);
|
||||
|
||||
app->asset->store->paths(['assets']);
|
||||
app->asset->process('swagg.css', 'css/swagg.css');
|
||||
|
|
|
@ -20,43 +20,46 @@ sub get_posts($self, $this_page = undef) {
|
|||
|
||||
return $self->pg->db
|
||||
->query(<<~'END_SQL', $row_count, $offset)->arrays();
|
||||
SELECT to_char(message_date, 'Dy Mon DD HH:MI:SS AM TZ YYYY'),
|
||||
SELECT TO_CHAR(message_date, 'Dy Mon DD HH:MI:SS AM TZ YYYY'),
|
||||
visitor_name,
|
||||
message,
|
||||
homepage_url
|
||||
FROM messages
|
||||
WHERE NOT is_spam
|
||||
ORDER BY message_date DESC
|
||||
LIMIT ? OFFSET ?;
|
||||
END_SQL
|
||||
}
|
||||
else {
|
||||
return $self->pg->db->query(<<~'END_SQL')->arrays()
|
||||
SELECT to_char(message_date, 'Dy Mon DD HH:MI:SS AM TZ YYYY'),
|
||||
SELECT TO_CHAR(message_date, 'Dy Mon DD HH:MI:SS AM TZ YYYY'),
|
||||
visitor_name,
|
||||
message,
|
||||
homepage_url
|
||||
FROM messages
|
||||
WHERE NOT is_spam
|
||||
ORDER BY message_date DESC;
|
||||
END_SQL
|
||||
}
|
||||
}
|
||||
|
||||
sub create_post($self, $name, $message, $url = undef) {
|
||||
sub create_post($self, $name, $message, $url = undef, $spam = 1) {
|
||||
if ($url) {
|
||||
$self->pg->db->query(<<~'END_SQL', $name, $message, $url)
|
||||
$self->pg->db->query(<<~'END_SQL', $name, $message, $url, $spam)
|
||||
INSERT INTO messages (
|
||||
message_date,
|
||||
visitor_name,
|
||||
message,
|
||||
homepage_url
|
||||
homepage_url,
|
||||
is_spam
|
||||
)
|
||||
VALUES (NOW(), ?, ?, ?);
|
||||
VALUES (NOW(), ?, ?, ?, ?);
|
||||
END_SQL
|
||||
}
|
||||
else {
|
||||
$self->pg->db->query(<<~'END_SQL', $name, $message)
|
||||
INSERT INTO messages (message_date, visitor_name, message)
|
||||
VALUES (NOW(), ?, ?);
|
||||
$self->pg->db->query(<<~'END_SQL', $name, $message, $spam)
|
||||
INSERT INTO messages (message_date, visitor_name, message, is_spam)
|
||||
VALUES (NOW(), ?, ?, ?);
|
||||
END_SQL
|
||||
}
|
||||
|
||||
|
@ -76,7 +79,11 @@ sub get_last_page($self) {
|
|||
}
|
||||
|
||||
sub get_post_count($self) {
|
||||
return $self->pg->db->query('SELECT count(*) FROM messages;')->text()
|
||||
return $self->pg->db->query(<<~'END_SQL')->text()
|
||||
SELECT COUNT(*)
|
||||
FROM messages
|
||||
WHERE NOT is_spam;
|
||||
END_SQL
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
2
migrations/5/down.sql
Normal file
2
migrations/5/down.sql
Normal file
|
@ -0,0 +1,2 @@
|
|||
ALTER TABLE messages
|
||||
DROP COLUMN is_spam;
|
10
migrations/5/up.sql
Normal file
10
migrations/5/up.sql
Normal file
|
@ -0,0 +1,10 @@
|
|||
ALTER TABLE messages
|
||||
ADD is_spam BOOLEAN;
|
||||
|
||||
UPDATE messages
|
||||
SET is_spam = FALSE
|
||||
WHERE is_spam IS NULL;
|
||||
|
||||
ALTER TABLE messages
|
||||
ALTER COLUMN is_spam
|
||||
SET NOT NULL;
|
Loading…
Reference in a new issue