% use Data::Page (); use Data::Page::Navigation (); # Parameters my $type = param('type'); my $q = param('q'); my $page = param('page'); my $type_exists = $type ? 1 : 0; $type ||= 'repositories'; my $q_exists = defined $q ? 1 : 0; # DBI my $dbi = app->dbi; # Limit $page ||= 1; my $count = 20; my $offset = ($page - 1) * $count; my $rows; my $tabel; my $table; my $where = $dbi->where; if ($q_exists) { if ($type eq 'users') { $table = 'user'; $where->clause(':id{like}'); $where->param({id => "%$q%"}); $rows = $dbi->model($table)->select( where => $where, append => "order by id limit $offset, $count" )->all; } elsif ($type eq 'repositories') { $table = 'project'; $where->clause(':name{like}'); $where->param({name => "%$q%"}); $rows = $dbi->model($table)->select( where => $where, append => "order by name, user_id limit $offset, $count" )->all; } } $rows ||= []; # Pager my $total = $dbi->model($table)->select( 'count(*)', where => $where, )->value; my $pager = Data::Page->new($total, $count, $page); my @pages = $pager->pages_in_navigation(10); %> % layout 'common', title => 'Search'; %= include '/include/header', title => 'Gitprep';