diff options
author | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-04-29 12:59:28 +0000 |
---|---|---|
committer | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-04-29 12:59:28 +0000 |
commit | 2e533bd16346ec74216415c01a57c7276d608cf8 (patch) | |
tree | 680ac1cb7fe15c65a53c9f0bc6b1e4949481118b /lib/VNDB/Util/DB.pm | |
parent | 04c26425699a3e01d0e2abe52ad9f763396cd940 (diff) |
...another commit...
git-svn-id: svn://vndb.org/vndb@9 1fe2e327-d9db-4752-bcf7-ef0cb4a1748b
Diffstat (limited to 'lib/VNDB/Util/DB.pm')
-rw-r--r-- | lib/VNDB/Util/DB.pm | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/lib/VNDB/Util/DB.pm b/lib/VNDB/Util/DB.pm index 3f99aff8..f10f7b67 100644 --- a/lib/VNDB/Util/DB.pm +++ b/lib/VNDB/Util/DB.pm @@ -630,10 +630,11 @@ sub DBGetVN { # %options->{ id rev char search order results page what cati cate ); $_->{c_released} = sprintf '%08d', $_->{c_released} for @$r; - if($o{what} =~ /(relations|categories)/ && $#$r >= 0) { + if($o{what} =~ /(?:relations|categories|anime)/ && $#$r >= 0) { my %r = map { $r->[$_]{relations} = []; $r->[$_]{categories} = []; + $r->[$_]{anime} = []; ($r->[$_]{cid}, $_) } 0..$#$r; @@ -646,6 +647,16 @@ sub DBGetVN { # %options->{ id rev char search order results page what cati cate )}); } + if($o{what} =~ /anime/) { + push(@{$r->[$r{$_->{vid}}]{anime}}, $_) && delete $_->{vid} for (@{$s->DBAll(q| + SELECT va.vid, a.* + FROM vn_anime va + JOIN anime a ON va.aid = a.id + WHERE va.vid IN(!l)|, + [ keys %r ] + )}); + } + if($o{what} =~ /relations/) { my $rel = $s->DBAll(q| SELECT rel.vid1, rel.vid2, rel.relation, vr.title @@ -669,7 +680,7 @@ sub DBGetVN { # %options->{ id rev char search order results page what cati cate } -sub DBAddVN { # %options->{ columns in vn_rev + comm + relations } +sub DBAddVN { # %options->{ columns in vn_rev + comm + relations + categories + anime } my($s, %o) = @_; $s->DBExec(q| @@ -690,7 +701,7 @@ sub DBAddVN { # %options->{ columns in vn_rev + comm + relations } } -sub DBEditVN { # id, %options->( columns in vn_rev + comm + relations + categories + uid + causedby } +sub DBEditVN { # id, %options->( columns in vn_rev + comm + relations + categories + anime + uid + causedby } my($s, $vid, %o) = @_; $s->DBExec(q| @@ -733,6 +744,25 @@ sub _insert_vn_rev { VALUES (%d, %d, %d)|, $cid, $_->[1], $_->[0] ) for (@{$o->{relations}}); + + if(@{$o->{anime}}) { + $s->DBExec(q| + INSERT INTO vn_anime (vid, aid) + VALUES (%d, %d)|, + $cid, $_ + ) for (@{$o->{anime}}); + + # insert unknown anime + my $a = $s->DBAll(q| + SELECT id FROM anime WHERE id IN(!l)|, + $o->{anime}); + $s->DBExec(q| + INSERT INTO anime (id) VALUES (%d)|, $_ + ) for (grep { + my $ia = $_; + !(scalar grep $ia == $_->{id}, @$a) + } @{$o->{anime}}); + } } |