diff options
author | Yorhel <git@yorhel.nl> | 2015-10-21 02:19:15 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2015-10-21 02:28:48 +0200 |
commit | 9cf3eef0e0a7bde10a0e1bb8c94c38b058e5121d (patch) | |
tree | 9cbd3a439316bdfe3946cc80378e4f95a9d6e6db /lib/VNDB/Handler | |
parent | 718f4d0258049aa92f229c08d5ec7204dae3ffa6 (diff) |
SQL: Fix editing + func.sql + triggers.sql + autocreate editing funcs
This changes quite a bit to the way the editing functions work. Because
these functions are very repetitive and it's easy to keep things out of
sync, I created a script to generate them automatically. I had to rename
a few function and table names for consistency to make this work.
Since database entries don't have a 'latest' column anymore, and since
the order in which tables are updated doesn't have to be fixed, I
dropped many of the SQL triggers and replaced them with a
edit_committed() function which is called from edit_*_commit() and
checks for stuff to be done.
Don't forget to run 'make' before importing the update script.
Diffstat (limited to 'lib/VNDB/Handler')
-rw-r--r-- | lib/VNDB/Handler/Chars.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/Handler/Producers.pm | 8 | ||||
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/Handler/Staff.pm | 8 | ||||
-rw-r--r-- | lib/VNDB/Handler/VNEdit.pm | 14 |
5 files changed, 19 insertions, 19 deletions
diff --git a/lib/VNDB/Handler/Chars.pm b/lib/VNDB/Handler/Chars.pm index 524b5a04..98847b4c 100644 --- a/lib/VNDB/Handler/Chars.pm +++ b/lib/VNDB/Handler/Chars.pm @@ -344,8 +344,8 @@ sub edit { $_->[1]||=undef for (@vns); $frm->{vns} = \@vns; - my $nrev = $self->dbItemEdit(c => !$copy && $id ? $r->{cid} : undef, %$frm); - return $self->resRedirect("/c$nrev->{iid}.$nrev->{rev}", 'post'); + my $nrev = $self->dbItemEdit(c => !$copy && $id ? ($r->{id}, $r->{rev}) : (undef, undef), %$frm); + return $self->resRedirect("/c$nrev->{itemid}.$nrev->{rev}", 'post'); } } diff --git a/lib/VNDB/Handler/Producers.pm b/lib/VNDB/Handler/Producers.pm index 628034c2..69000b27 100644 --- a/lib/VNDB/Handler/Producers.pm +++ b/lib/VNDB/Handler/Producers.pm @@ -247,16 +247,16 @@ sub edit { $frm->{relations} = $relations; $frm->{l_wp} = undef if !$frm->{l_wp}; - my $nrev = $self->dbItemEdit(p => $pid ? $p->{cid} : undef, %$frm); + my $nrev = $self->dbItemEdit(p => $pid||undef, $pid ? $p->{rev} : undef, %$frm); # update reverse relations if(!$pid && $#$relations >= 0 || $pid && $frm->{prodrelations} ne $b4{prodrelations}) { my %old = $pid ? (map { $_->{id} => $_->{relation} } @{$p->{relations}}) : (); my %new = map { $_->[1] => $_->[0] } @$relations; - _updreverse($self, \%old, \%new, $nrev->{iid}, $nrev->{rev}); + _updreverse($self, \%old, \%new, $nrev->{itemid}, $nrev->{rev}); } - return $self->resRedirect("/p$nrev->{iid}.$nrev->{rev}", 'post'); + return $self->resRedirect("/p$nrev->{itemid}.$nrev->{rev}", 'post'); } } @@ -333,7 +333,7 @@ sub _updreverse { my $r = $self->dbProducerGetRev(id => $i, what => 'relations')->[0]; my @newrel = map $_->{id} != $pid ? [ $_->{relation}, $_->{id} ] : (), @{$r->{relations}}; push @newrel, [ $upd{$i}, $pid ] if $upd{$i}; - $self->dbItemEdit(p => $r->{cid}, + $self->dbItemEdit(p => $i, $r->{rev}, relations => \@newrel, editsum => "Reverse relation update caused by revision p$pid.$rev", uid => 1, diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 1c97eced..78476db2 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -350,7 +350,7 @@ sub edit { } if(!$frm->{_err}) { - my $nrev = $self->dbItemEdit(r => !$copy && $rid ? $r->{cid} : undef, + my $nrev = $self->dbItemEdit(r => !$copy && $rid ? ($r->{id}, $r->{rev}) : (undef, undef), (map { $_ => $frm->{$_} } qw| type title original gtin catalog languages website released minage notes platforms resolution editsum patch voiced freeware doujin ani_story ani_ero ihid ilock|), vn => $new_vn, @@ -358,7 +358,7 @@ sub edit { media => $media, ); - return $self->resRedirect("/r$nrev->{iid}.$nrev->{rev}", 'post'); + return $self->resRedirect("/r$nrev->{itemid}.$nrev->{rev}", 'post'); } } diff --git a/lib/VNDB/Handler/Staff.pm b/lib/VNDB/Handler/Staff.pm index f2e855ba..4bf6e63a 100644 --- a/lib/VNDB/Handler/Staff.pm +++ b/lib/VNDB/Handler/Staff.pm @@ -191,7 +191,7 @@ sub edit { (map { $_ => $s->{$_} } qw|name original gender lang desc l_wp l_site l_twitter l_anidb ihid ilock|), primary => $s->{aid}, aliases => [ - map +{ aid => $_->{id}, name => $_->{name}, orig => $_->{original} }, + map +{ aid => $_->{aid}, name => $_->{name}, orig => $_->{original} }, sort { $a->{name} cmp $b->{name} || $a->{original} cmp $b->{original} } @{$s->{aliases}} ], ); @@ -221,7 +221,7 @@ sub edit { ); if(!$frm->{_err}) { - my %old_aliases = $sid ? ( map +($_->{id} => 1), @{$self->dbStaffAliasIds($sid)} ) : (); + my %old_aliases = $sid ? ( map +($_->{aid} => 1), @{$self->dbStaffAliasIds($sid)} ) : (); $frm->{primary} = 0 unless exists $old_aliases{$frm->{primary}}; # reset aid to zero for newly added aliases. @@ -233,8 +233,8 @@ sub edit { $frm->{desc} = $self->bbSubstLinks($frm->{desc}); return $self->resRedirect("/s$sid", 'post') if $sid && !form_compare(\%b4, $frm); - my $nrev = $self->dbItemEdit ('s' => $sid ? $s->{cid} : undef, %$frm); - return $self->resRedirect("/s$nrev->{iid}.$nrev->{rev}", 'post'); + my $nrev = $self->dbItemEdit(s => $sid ? ($s->{id}, $s->{rev}) : (undef, undef), %$frm); + return $self->resRedirect("/s$nrev->{itemid}.$nrev->{rev}", 'post'); } } diff --git a/lib/VNDB/Handler/VNEdit.pm b/lib/VNDB/Handler/VNEdit.pm index c383be78..07d1a916 100644 --- a/lib/VNDB/Handler/VNEdit.pm +++ b/lib/VNDB/Handler/VNEdit.pm @@ -77,7 +77,7 @@ sub addform { sub edit { my($self, $vid, $rev, $nosubmit) = @_; - my $v = $vid && $self->dbVNGet(id => $vid, what => 'extended screenshots relations anime credits changes', $rev ? (rev => $rev) : ())->[0]; + my $v = $vid && $self->dbVNGetRev(id => $vid, what => 'extended screenshots relations anime credits changes', $rev ? (rev => $rev) : ())->[0]; return $self->resNotFound if $vid && !$v->{id}; $rev = undef if !$vid || $v->{lastrev}; @@ -176,7 +176,7 @@ sub edit { return $self->resRedirect("/v$vid", 'post') if $vid && !form_compare(\%b4, $frm); # perform the edit/add - my $nrev = $self->dbItemEdit(v => $vid ? $v->{cid} : undef, + my $nrev = $self->dbItemEdit(v => $vid ? ($v->{id}, $v->{rev}) : (undef, undef), (map { $_ => $frm->{$_} } qw|title original image alias desc length l_wp l_encubed l_renai editsum img_nsfw ihid ilock credits seiyuu screenshots|), anime => [ keys %$anime ], relations => $relations, @@ -186,10 +186,10 @@ sub edit { if(!$vid && $#$relations >= 0 || $vid && $frm->{vnrelations} ne $b4{vnrelations}) { my %old = $vid ? (map +($_->{id} => [ $_->{relation}, $_->{official} ]), @{$v->{relations}}) : (); my %new = map +($_->[1] => [ $_->[0], $_->[2] ]), @$relations; - _updreverse($self, \%old, \%new, $nrev->{iid}, $nrev->{rev}); + _updreverse($self, \%old, \%new, $nrev->{itemid}, $nrev->{rev}); } - return $self->resRedirect("/v$nrev->{iid}.$nrev->{rev}", 'post'); + return $self->resRedirect("/v$nrev->{itemid}.$nrev->{rev}", 'post'); } } @@ -422,7 +422,7 @@ sub _form { # Update reverse relations and regenerate relation graph # Arguments: %old. %new, vid, rev -# %old,%new -> { vid2 => [ relation, official ], .. } +# %old,%new -> { vid => [ relation, official ], .. } # from the perspective of vid # rev is of the related edit sub _updreverse { @@ -441,10 +441,10 @@ sub _updreverse { # edit all related VNs for my $i (keys %upd) { - my $r = $self->dbVNGet(id => $i, what => 'relations')->[0]; + my $r = $self->dbVNGetRev(id => $i, what => 'relations')->[0]; my @newrel = map $_->{id} != $vid ? [ $_->{relation}, $_->{id}, $_->{official} ] : (), @{$r->{relations}}; push @newrel, [ $upd{$i}[0], $vid, $upd{$i}[1] ] if $upd{$i}; - $self->dbItemEdit(v => $r->{cid}, + $self->dbItemEdit(v => $r->{id}, $r->{rev}, relations => \@newrel, editsum => "Reverse relation update caused by revision v$vid.$rev", uid => 1, # Multi |