Author: acid2
Date: 2009-06-29 16:15:41 +0000 (Mon, 29 Jun 2009)
New Revision: 11792
Added:
mb_server/trunk/lib/MusicBrainz/Server/Edit/Label/Merge.pm
mb_server/trunk/t/edit_label_merge.t
Modified:
mb_server/trunk/lib/MusicBrainz/Server/Constants.pm
mb_server/trunk/lib/MusicBrainz/Server/Data/Label.pm
mb_server/trunk/lib/MusicBrainz/Server/Data/ReleaseLabel.pm
mb_server/trunk/t/data_label.t
mb_server/trunk/t/data_releaselabel.t
Log:
Merge labels edit type. See review 216
Merge branch 'edit-label-merge'
Modified: mb_server/trunk/lib/MusicBrainz/Server/Constants.pm
===================================================================
--- mb_server/trunk/lib/MusicBrainz/Server/Constants.pm 2009-06-29 16:15:27 UTC (rev 11791)
+++ mb_server/trunk/lib/MusicBrainz/Server/Constants.pm 2009-06-29 16:15:41 UTC (rev 11792)
@@ -40,6 +40,7 @@
Readonly our $EDIT_LABEL_CREATE => 10;
Readonly our $EDIT_LABEL_EDIT => 11;
Readonly our $EDIT_LABEL_DELETE => 13;
+Readonly our $EDIT_LABEL_MERGE => 14;
Readonly our $EDIT_RELEASEGROUP_DELETE => 23;
Readonly our $EDIT_RELEASEGROUP_MERGE => 24;
Modified: mb_server/trunk/lib/MusicBrainz/Server/Data/Label.pm
===================================================================
--- mb_server/trunk/lib/MusicBrainz/Server/Data/Label.pm 2009-06-29 16:15:27 UTC (rev 11791)
+++ mb_server/trunk/lib/MusicBrainz/Server/Data/Label.pm 2009-06-29 16:15:41 UTC (rev 11792)
@@ -1,6 +1,8 @@
package MusicBrainz::Server::Data::Label;
use Moose;
+use MusicBrainz::Server::Data::Edit;
+use MusicBrainz::Server::Data::ReleaseLabel;
use MusicBrainz::Server::Entity::Label;
use MusicBrainz::Server::Data::Utils qw(
defined_hash
@@ -114,6 +116,27 @@
return 1;
}
+sub merge
+{
+ my ($self, $old_id, $new_id) = @_;
+ my $new_label = $self->get_by_id($new_id);
+ my $rl_data = MusicBrainz::Server::Data::ReleaseLabel->new(c => $self->c);
+ my $edit_data = MusicBrainz::Server::Data::Edit->new(c => $self->c);
+
+ my $sql = Sql->new($self->c->dbh);
+ $self->alias->merge($old_id => $new_id);
+ $self->annotation->merge($old_id => $new_id);
+ $rl_data->merge_labels($old_id => $new_id);
+ $edit_data->merge_entities('label', $old_id => $new_id);
+ $self->update_gid_redirects($old_id => $new_id);
+
+ $sql->Do('DELETE FROM label_meta WHERE id = ?', $old_id);
+ my $old_gid = $sql->SelectSingleValue('DELETE FROM label WHERE id = ? RETURNING gid', $old_id);
+ $self->add_gid_redirects($old_gid => $new_id);
+
+ return 1;
+}
+
sub _hash_to_row
{
my ($self, $label, $names) = @_;
Modified: mb_server/trunk/lib/MusicBrainz/Server/Data/ReleaseLabel.pm
===================================================================
--- mb_server/trunk/lib/MusicBrainz/Server/Data/ReleaseLabel.pm 2009-06-29 16:15:27 UTC (rev 11791)
+++ mb_server/trunk/lib/MusicBrainz/Server/Data/ReleaseLabel.pm 2009-06-29 16:15:41 UTC (rev 11792)
@@ -74,6 +74,13 @@
$query, $label_id, $offset || 0);
}
+sub merge_labels
+{
+ my ($self, $old_id, $new_id) = @_;
+ my $sql = Sql->new($self->c->dbh);
+ $sql->Do('UPDATE release_label SET label = ? WHERE label = ?', $new_id, $old_id);
+}
+
__PACKAGE__->meta->make_immutable;
no Moose;
1;
Modified: mb_server/trunk/t/data_label.t
===================================================================
--- mb_server/trunk/t/data_label.t 2009-06-29 16:15:27 UTC (rev 11791)
+++ mb_server/trunk/t/data_label.t 2009-06-29 16:15:41 UTC (rev 11792)
@@ -1,6 +1,6 @@
use strict;
use warnings;
-use Test::More tests => 44;
+use Test::More tests => 46;
use_ok 'MusicBrainz::Server::Data::Label';
use MusicBrainz::Server::Data::Search;
@@ -89,4 +89,16 @@
$label_data->delete($label->id);
$label = $label_data->get_by_id($label->id);
ok(!defined $label);
+
+my $sql_raw = Sql->new($c->raw_dbh);
+$sql_raw->Begin;
+
+$label_data->merge(2, 1);
+$label = $label_data->get_by_id(2);
+ok(!defined $label);
+
+$label = $label_data->get_by_id(1);
+ok(defined $label);
+
+$sql_raw->Commit;
$sql->Commit;
Modified: mb_server/trunk/t/data_releaselabel.t
===================================================================
--- mb_server/trunk/t/data_releaselabel.t 2009-06-29 16:15:27 UTC (rev 11791)
+++ mb_server/trunk/t/data_releaselabel.t 2009-06-29 16:15:41 UTC (rev 11792)
@@ -1,10 +1,11 @@
use strict;
use warnings;
-use Test::More tests => 16;
+use Test::More tests => 18;
use_ok 'MusicBrainz::Server::Data::ReleaseLabel';
use MusicBrainz::Server::Context;
use MusicBrainz::Server::Test;
+use Sql;
my $c = MusicBrainz::Server::Test->create_test_context();
MusicBrainz::Server::Test->prepare_test_database($c);
@@ -30,3 +31,15 @@
is( $rls->[2]->catalog_number, "ABC-123" );
is( $rls->[3]->release->id, 1 );
is( $rls->[3]->catalog_number, "ABC-123-X" );
+
+my $sql = Sql->new($c->dbh);
+$sql->Begin;
+
+$rl_data->merge_labels(2 => 1);
+($rls, $hits) = $rl_data->find_by_label(1, 100);
+is($hits, 4);
+
+($rls, $hits) = $rl_data->find_by_label(2, 100);
+is($hits, 0);
+
+$sql->Commit;
_______________________________________________
MusicBrainz-commits mailing list
MusicBrainz-commits@...
http://lists.musicbrainz.org/mailman/listinfo/musicbrainz-commits