guestbook-ng/lib/GuestbookNg/Model/Message.pm

58 lines
1.4 KiB
Perl
Raw Normal View History

2021-12-04 23:06:05 -05:00
#!/usr/bin/env perl
package GuestbookNg::Model::Message;
use Mojo::Base -base, -signatures;
has 'pg';
2021-12-12 01:50:07 -05:00
sub new($class, $pg, $pg_object) {
bless {
$pg => $pg_object,
max_posts => 5
}
2021-12-04 23:06:05 -05:00
}
sub get_posts($self) {
$self->pg->db
2021-12-19 19:09:16 -05:00
->query('SELECT to_char(
2021-12-21 23:09:35 -05:00
message_date,
\'Dy Mon DD HH:MI:SS AM TZ YYYY\'
2021-12-19 19:09:16 -05:00
),
visitor_name, message
FROM messages
2021-12-19 19:09:16 -05:00
ORDER BY message_date DESC;')->arrays()
}
2021-12-19 19:09:16 -05:00
sub create_post($self, $name, $message) {
$self->pg->db->query(
2021-12-19 19:09:16 -05:00
'INSERT INTO messages (message_date, visitor_name, message)
VALUES (NOW(), ?, ?);', $name, $message
)
}
2021-12-19 17:43:58 -05:00
sub view_posts($self, $this_page, $last_page = undef, @posts) {
$last_page //= get_last_page(@posts);
2021-12-12 01:50:07 -05:00
my $last_post = $this_page * $self->{'max_posts'} - 1;
my $first_post = $last_post - $self->{'max_posts'} + 1;
grep defined, @posts[$first_post..$last_post];
}
sub max_posts($self, $value = undef) {
2021-12-21 23:09:35 -05:00
$self->{'max_posts'} = $value // $self->{'max_posts'}
2021-12-12 01:50:07 -05:00
}
sub get_last_page($self, @posts) {
2021-12-18 23:03:53 -05:00
# Add a page if we have "remainder" posts
if (scalar(@posts) % $self->{'max_posts'}) {
sprintf('%d', scalar(@posts) / $self->{'max_posts'}) + 1
}
else {
sprintf('%d', scalar(@posts) / $self->{'max_posts'})
}
2021-12-12 01:50:07 -05:00
}
2021-12-04 23:06:05 -05:00
1;