summaryrefslogtreecommitdiff
path: root/lib/VNDB/DB/Chars.pm
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2011-02-22 16:30:19 +0100
committerYorhel <git@yorhel.nl>2011-02-22 16:30:19 +0100
commit77f6ce0bb06e0496fbcc98656b82108d62c6aeef (patch)
treea58aa39cb5b30899692ecc623d23182dabac0726 /lib/VNDB/DB/Chars.pm
parent1c74dfdf44f080bc4a30be6303bf2845c2f5f7b0 (diff)
chardb: +char<->vn linking, +vn display on char pages
Diffstat (limited to 'lib/VNDB/DB/Chars.pm')
-rw-r--r--lib/VNDB/DB/Chars.pm42
1 files changed, 30 insertions, 12 deletions
diff --git a/lib/VNDB/DB/Chars.pm b/lib/VNDB/DB/Chars.pm
index c5c16932..03771132 100644
--- a/lib/VNDB/DB/Chars.pm
+++ b/lib/VNDB/DB/Chars.pm
@@ -9,7 +9,7 @@ our @EXPORT = qw|dbCharGet dbCharRevisionInsert dbCharImageId|;
# options: id rev traitspoil trait_inc trait_exc what results page
-# what: extended traits changes
+# what: extended traits vns changes
sub dbCharGet {
my $self = shift;
my %o = (
@@ -48,27 +48,41 @@ sub dbCharGet {
join(', ', @select), join(' ', @join), \%where
);
- if(@$r && $o{what} =~ /traits/) {
+ if(@$r && $o{what} =~ /(vns|traits)/) {
my %r = map {
$_->{traits} = [];
- ($_->{cid}, $_->{traits})
+ $_->{vns} = [];
+ ($_->{cid}, $_)
} @$r;
- push @{$r{ delete $_->{cid} }}, $_ for (@{$self->dbAll(q|
- SELECT ct.cid, ct.tid, ct.spoil, t.name, t."group", tg.name AS groupname
- FROM chars_traits ct
- JOIN traits t ON t.id = ct.tid
- LEFT JOIN traits tg ON tg.id = t."group"
- WHERE cid IN(!l)|, [ keys %r ]
- )});
+ if($o{what} =~ /traits/) {
+ push @{$r{ delete $_->{cid} }{traits}}, $_ for (@{$self->dbAll(q|
+ SELECT ct.cid, ct.tid, ct.spoil, t.name, t."group", tg.name AS groupname
+ FROM chars_traits ct
+ JOIN traits t ON t.id = ct.tid
+ LEFT JOIN traits tg ON tg.id = t."group"
+ WHERE cid IN(!l)|, [ keys %r ]
+ )});
+ }
+
+ if($o{what} =~ /vns/) {
+ push @{$r{ delete $_->{cid} }{vns}}, $_ for (@{$self->dbAll(q|
+ SELECT cv.cid, cv.vid, cv.rid, cv.spoil, cv.role, vr.title AS vntitle, rr.title AS rtitle
+ FROM chars_vns cv
+ JOIN vn v ON cv.vid = v.id
+ JOIN vn_rev vr ON vr.id = v.latest
+ LEFT JOIN releases r ON cv.rid = r.id
+ LEFT JOIN releases_rev rr ON rr.id = r.latest
+ WHERE cv.cid IN(!l)|, [ keys %r ]
+ )});
+ }
}
-
return wantarray ? ($r, $np) : $r;
}
# Updates the edit_* tables, used from dbItemEdit()
-# Arguments: { columns in chars_rev + traits },
+# Arguments: { columns in chars_rev + traits + vns },
sub dbCharRevisionInsert {
my($self, $o) = @_;
@@ -80,6 +94,10 @@ sub dbCharRevisionInsert {
$self->dbExec('DELETE FROM edit_char_traits');
$self->dbExec('INSERT INTO edit_char_traits (tid, spoil) VALUES (?,?)', $_->[0],$_->[1]) for (@{$o->{traits}});
}
+ if($o->{vns}) {
+ $self->dbExec('DELETE FROM edit_char_vns');
+ $self->dbExec('INSERT INTO edit_char_vns (vid, rid, spoil, role) VALUES(!l)', $_) for (@{$o->{vns}});
+ }
}