aboutsummaryrefslogtreecommitdiff
path: root/lib/MasterWebInterface/Database/Games.pm
blob: 02b6ad9494f000d6a079e39917887ca2dd97ae53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package MasterWebInterface::Database::Games;
use strict;
use warnings;
use Exporter 'import';
our @EXPORT = qw| dbGameListGet dbGetGameDesc |;

# Get list of games
sub dbGameListGet 
{
    my $s = shift;
    my %o = (
        page    => 1, 
        results => 50, 
        sort    => '', 
        @_
    );
    
    # search criteria
    my %where = (
        $o{search} ? ('lower(label) LIKE lower(?)' => "%$o{search}%") : (),
        !$o{all}   ? (             'num_total > ?' => 0)              : (),
    );
    
    # what to get from db
    my @select = ( 
        qw| label gamename num_direct num_total |
    );
    
    # sort order
    my $order = sprintf {
        label       => 'label %s',
        gamename    => 'gamename %s',
        num_total   => 'num_total %s',
    }->{ $o{sort}||'num_total' }, $o{reverse} ? 'DESC' : 'ASC';
    
    # query
    my($r, $np) = $s->dbPage(
        \%o, 
        q| SELECT !s FROM gameinfo !W ORDER BY !s|,
        join(', ', @select), 
        \%where, 
        $order
    );
    
    # page numbering
    my $p = $s->dbAll( 
        q| SELECT COUNT(*) AS num FROM gameinfo !W|, 
        \%where,
    )->[0]{num};
    
    return wantarray ? ($r, $np, $p) : $r;
}

# Get description for a game by gamename
sub dbGetGameDesc 
{
    my ($self, $gn) = @_;
    return $self->dbAll("SELECT label FROM gameinfo WHERE gamename = ?", $gn)->[0]{label};
}

1;