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
|
package VNDB::DB::Docs;
use strict;
use warnings;
use Exporter 'import';
our @EXPORT = qw|dbDocGet dbDocGetRev|;
# Can only fetch a single document.
# $doc = $self->dbDocGet(id => $id);
sub dbDocGet {
my $self = shift;
my %o = @_;
my $r = $self->dbAll('SELECT id, title, content FROM docs WHERE id = ?', $o{id});
return wantarray ? ($r, 0) : $r;
}
# options: id, rev
sub dbDocGetRev {
my $self = shift;
my %o = @_;
$o{rev} ||= $self->dbRow('SELECT MAX(rev) AS rev FROM changes WHERE type = \'d\' AND itemid = ?', $o{id})->{rev};
my $r = $self->dbAll(q|
SELECT de.id, d.title, d.content, de.hidden, de.locked,
extract('epoch' from c.added) as added, c.requester, c.comments, u.username, c.rev, c.ihid, c.ilock, c.id AS cid,
NOT EXISTS(SELECT 1 FROM changes c2 WHERE c2.type = c.type AND c2.itemid = c.itemid AND c2.rev = c.rev+1) AS lastrev
FROM changes c
JOIN docs de ON de.id = c.itemid
JOIN docs_hist d ON d.chid = c.id
JOIN users u ON u.id = c.requester
WHERE c.type = 'd' AND c.itemid = ? AND c.rev = ?|,
$o{id}, $o{rev}
);
return wantarray ? ($r, 0) : $r;
}
1;
|