summaryrefslogtreecommitdiff
path: root/lib/VNDB/DB/VN.pm
diff options
context:
space:
mode:
authormorkt <>2014-12-28 09:39:21 +0100
committerYorhel <git@yorhel.nl>2014-12-28 09:39:21 +0100
commit6399d6d4e21bd4464c7224f821d6ea071ea7a614 (patch)
tree0eea1eae38e2b98d2f0a235866f6e03749a6b0fa /lib/VNDB/DB/VN.pm
parent8719a8e69f5fc46c4ccf44e6e99c33b60c342d76 (diff)
More progress on the staff + cast DB
Diffstat (limited to 'lib/VNDB/DB/VN.pm')
-rw-r--r--lib/VNDB/DB/VN.pm26
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm
index 1b127e44..97fc3086 100644
--- a/lib/VNDB/DB/VN.pm
+++ b/lib/VNDB/DB/VN.pm
@@ -146,6 +146,7 @@ sub dbVNGet {
my %r = map {
$r->[$_]{anime} = [];
$r->[$_]{credits} = [];
+ $r->[$_]{seiyuu} = [];
$r->[$_]{relations} = [];
$r->[$_]{screenshots} = [];
($r->[$_]{cid}, $_)
@@ -153,7 +154,7 @@ sub dbVNGet {
if($o{what} =~ /credits/) {
push(@{$r->[$r{ delete $_->{vid} }]{credits}}, $_) for (@{$self->dbAll(q|
- SELECT vs.vid, s.id, vs.aid, sa.name, sa.original, sr.gender, sr.lang, sr.id AS cid, vs.role, vs.note
+ SELECT vs.vid, s.id, vs.aid, sa.name, sa.original, sr.gender, sr.lang, vs.role, vs.note
FROM vn_staff vs
JOIN staff_alias sa ON vs.aid = sa.id
JOIN staff_rev sr ON sr.id = sa.rid
@@ -162,6 +163,20 @@ sub dbVNGet {
ORDER BY vs.role ASC, sa.name ASC|,
[ keys %r ]
)});
+ push(@{$r->[$r{ delete $_->{vid} }]{seiyuu}}, $_) for (@{$self->dbAll(q|
+ SELECT vs.vid, s.id, vs.aid, sa.name, sa.original, sr.gender, sr.lang, cr.cid, cr.name AS cname, vs.note
+ FROM vn_seiyuu vs
+ JOIN vn_rev vr ON vr.id = vs.vid
+ JOIN staff_alias sa ON vs.aid = sa.id
+ JOIN staff_rev sr ON sr.id = sa.rid
+ JOIN staff s ON sr.id = s.latest
+ JOIN chars c ON c.id = vs.cid
+ JOIN chars_rev cr ON cr.id = c.latest
+ JOIN chars_vns cv ON cv.cid = cr.id AND cv.vid = vr.vid
+ WHERE vs.vid IN(!l)
+ ORDER BY cv.role, cr.name|,
+ [ keys %r ]
+ )});
}
if($o{what} =~ /anime/) {
@@ -246,6 +261,13 @@ sub dbVNRevisionInsert {
my @val = map @{$_}[0..2], @{$o->{credits}};
$self->dbExec("INSERT INTO edit_vn_staff (aid, role, note) VALUES $q", @val) if @val;
}
+
+ if($o->{seiyuu}) {
+ $self->dbExec('DELETE FROM edit_vn_seiyuu');
+ my $q = join ',', ('(?, ?, ?)') x @{$o->{seiyuu}};
+ my @val = map @{$_}[0..2], @{$o->{seiyuu}};
+ $self->dbExec("INSERT INTO edit_vn_seiyuu (aid, cid, note) VALUES $q", @val) if @val;
+ }
}
@@ -315,7 +337,7 @@ sub dbVNHasChar {
sub dbVNHasStaff {
my($self, $vid) = @_;
return $self->dbRow(
- 'SELECT 1 AS exists FROM vn v JOIN vn_staff vs ON v.latest = vs.vid WHERE v.id = ?', $vid
+ 'SELECT 1 AS exists FROM vn_staff vs FULL OUTER JOIN vn_seiyuu vsy ON vs.vid = vsy.vid JOIN vn v ON v.latest = vs.vid OR v.latest = vsy.vid WHERE v.id = ?', $vid
)->{exists};
}