|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
r11789 - in mb_server/trunk: admin/sql admin/sql/updates lib/MusicBrainz/Server/Data t
by root-97
::
Rate this Message:
Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message Author: acid2
Date: 2009-06-29 13:56:58 +0000 (Mon, 29 Jun 2009) New Revision: 11789 Added: mb_server/trunk/admin/sql/updates/ngs-20090629-unique_alias.sql Modified: mb_server/trunk/admin/sql/CreateIndexes.sql mb_server/trunk/admin/sql/DropIndexes.sql mb_server/trunk/admin/sql/InsertTestData.sql mb_server/trunk/lib/MusicBrainz/Server/Data/Alias.pm mb_server/trunk/lib/MusicBrainz/Server/Data/Annotation.pm mb_server/trunk/t/data_artist.t mb_server/trunk/t/data_artistalias.t Log: Merge alias/annotations support. See review 213 Merge branch 'merge-alias' Modified: mb_server/trunk/admin/sql/CreateIndexes.sql =================================================================== --- mb_server/trunk/admin/sql/CreateIndexes.sql 2009-06-29 13:56:42 UTC (rev 11788) +++ mb_server/trunk/admin/sql/CreateIndexes.sql 2009-06-29 13:56:58 UTC (rev 11789) @@ -5,8 +5,8 @@ CREATE INDEX artist_idx_name ON artist (name); CREATE INDEX artist_idx_sortname ON artist (sortname); -CREATE INDEX artist_alias_idx_name ON artist_alias (name); CREATE INDEX artist_alias_idx_artist ON artist_alias (artist); +CREATE UNIQUE INDEX artist_alias_idx_name_artist ON artist_alias (name, artist); CREATE UNIQUE INDEX artist_name_idx_name ON artist_name (name); CREATE INDEX artist_name_idx_page ON artist_name (page_index(name)); @@ -21,8 +21,8 @@ CREATE INDEX label_idx_name ON label (name); CREATE INDEX label_idx_sortname ON label (sortname); -CREATE INDEX label_alias_idx_name ON label_alias (name); CREATE INDEX label_alias_idx_label ON label_alias (label); +CREATE UNIQUE INDEX label_alias_idx_name_label ON label_alias (name, label); CREATE UNIQUE INDEX label_name_idx_name ON label_name (name); CREATE INDEX label_name_idx_page ON label_name (page_index(name)); Modified: mb_server/trunk/admin/sql/DropIndexes.sql =================================================================== --- mb_server/trunk/admin/sql/DropIndexes.sql 2009-06-29 13:56:42 UTC (rev 11788) +++ mb_server/trunk/admin/sql/DropIndexes.sql 2009-06-29 13:56:58 UTC (rev 11789) @@ -2,7 +2,7 @@ \unset ON_ERROR_STOP DROP INDEX artist_alias_idx_artist; -DROP INDEX artist_alias_idx_name; +DROP INDEX artist_alias_idx_name_artist; DROP INDEX artist_idx_gid; DROP INDEX artist_idx_name; DROP INDEX artist_idx_sortname; @@ -12,7 +12,7 @@ DROP INDEX country_idx_isocode; DROP INDEX editor_idx_name; DROP INDEX label_alias_idx_label; -DROP INDEX label_alias_idx_name; +DROP INDEX label_alias_idx_name_label; DROP INDEX label_idx_gid; DROP INDEX label_idx_name; DROP INDEX label_idx_sortname; Modified: mb_server/trunk/admin/sql/InsertTestData.sql =================================================================== --- mb_server/trunk/admin/sql/InsertTestData.sql 2009-06-29 13:56:42 UTC (rev 11788) +++ mb_server/trunk/admin/sql/InsertTestData.sql 2009-06-29 13:56:58 UTC (rev 11789) @@ -214,6 +214,9 @@ INSERT INTO artist_alias (id, name, artist, editpending) VALUES (1, 8, 4, 2); +INSERT INTO artist_alias (id, name, artist) + VALUES (2, 8, 5); + TRUNCATE label_alias CASCADE; INSERT INTO label_name (id, name) VALUES (3, 'Test Label Alias'); @@ -391,8 +394,10 @@ INSERT INTO annotation (id, editor, text) VALUES (4, 1, 'Test annotation 4.'); INSERT INTO annotation (id, editor, text) VALUES (5, 1, 'Test annotation 5.'); INSERT INTO annotation (id, editor, text) VALUES (6, 1, 'Test annotation 6.'); +INSERT INTO annotation (id, editor, text) VALUES (7, 1, 'Test annotation 7.'); INSERT INTO artist_annotation (artist, annotation) VALUES (3, 1); +INSERT INTO artist_annotation (artist, annotation) VALUES (4, 7); INSERT INTO label_annotation (label, annotation) VALUES (2, 2); INSERT INTO recording_annotation (recording, annotation) VALUES (1, 3); INSERT INTO release_annotation (release, annotation) VALUES (1, 4); Modified: mb_server/trunk/lib/MusicBrainz/Server/Data/Alias.pm =================================================================== --- mb_server/trunk/lib/MusicBrainz/Server/Data/Alias.pm 2009-06-29 13:56:42 UTC (rev 11788) +++ mb_server/trunk/lib/MusicBrainz/Server/Data/Alias.pm 2009-06-29 13:56:58 UTC (rev 11789) @@ -62,6 +62,16 @@ return 1; } +sub merge +{ + my ($self, $old_id, $new_id) = @_; + my $sql = Sql->new($self->c->dbh); + my $table = $self->table; + my $type = $self->type; + $sql->Do("DELETE FROM $table WHERE name IN (SELECT name FROM $table WHERE $type = ?) AND $type = ?", $new_id, $old_id); + $sql->Do("UPDATE $table SET $type = ? WHERE $type = ?", $new_id, $old_id); +} + no Moose; __PACKAGE__->meta->make_immutable; 1; Modified: mb_server/trunk/lib/MusicBrainz/Server/Data/Annotation.pm =================================================================== --- mb_server/trunk/lib/MusicBrainz/Server/Data/Annotation.pm 2009-06-29 13:56:42 UTC (rev 11788) +++ mb_server/trunk/lib/MusicBrainz/Server/Data/Annotation.pm 2009-06-29 13:56:58 UTC (rev 11789) @@ -67,6 +67,15 @@ return 1; } +sub merge +{ + my ($self, $old_id, $new_id) = @_; + my $sql = Sql->new($self->c->dbh); + my $table = $self->table; + my $type = $self->type; + $sql->Do("UPDATE $table SET $type = ? WHERE $type = ?", $new_id, $old_id); +} + no Moose; __PACKAGE__->meta->make_immutable; 1; Modified: mb_server/trunk/t/data_artist.t =================================================================== --- mb_server/trunk/t/data_artist.t 2009-06-29 13:56:42 UTC (rev 11788) +++ mb_server/trunk/t/data_artist.t 2009-06-29 13:56:58 UTC (rev 11789) @@ -1,6 +1,6 @@ use strict; use warnings; -use Test::More tests => 58; +use Test::More tests => 62; use Test::Moose; use_ok 'MusicBrainz::Server::Data::Artist'; use MusicBrainz::Server::Data::Search; @@ -49,10 +49,23 @@ my $annotation = $artist_data->annotation->get_latest(3); like ( $annotation->text, qr/Test annotation 1/ ); -$artist_data->annotation->delete(3); +$artist_data->annotation->merge(3, 4); $annotation = $artist_data->annotation->get_latest(3); ok(!defined $annotation); +$annotation = $artist_data->annotation->get_latest(4); +like ( $annotation->text, qr/Test annotation 1/ ); + +TODO: { + local $TODO = 'Merging annotations should concatenate or combine them'; + like($annotation->text, qr/Test annotation 1/); + like($annotation->text, qr/Test annotation 7/); +} + +$artist_data->annotation->delete(4); +$annotation = $artist_data->annotation->get_latest(4); +ok(!defined $annotation); + $artist = $artist_data->get_by_gid('a4ef1d08-962e-4dd6-ae14-e42a6a97fc11'); is ( $artist->id, 4 ); Modified: mb_server/trunk/t/data_artistalias.t =================================================================== --- mb_server/trunk/t/data_artistalias.t 2009-06-29 13:56:42 UTC (rev 11788) +++ mb_server/trunk/t/data_artistalias.t 2009-06-29 13:56:58 UTC (rev 11789) @@ -1,6 +1,6 @@ #!/usr/bin/perl use strict; -use Test::More tests => 11; +use Test::More tests => 17; BEGIN { use_ok 'MusicBrainz::Server::Data::Artist' } @@ -33,6 +33,23 @@ is(scalar @$alias_set, 1); is($alias_set->[0]->name, 'Test Alias'); +$alias_set = $artist_data->alias->find_by_entity_id(3); +is(scalar @$alias_set, 0); + +$artist_data->alias->merge(4, 3); + +$alias_set = $artist_data->alias->find_by_entity_id(3); +is(scalar @$alias_set, 1); +is($alias_set->[0]->name, 'Test Alias'); + +$alias_set = $artist_data->alias->find_by_entity_id(5); +is(scalar @$alias_set, 1); + +# Test merging aliases with identical names +$artist_data->alias->merge(5, 3); +is(scalar @$alias_set, 1, 'should only have 1 alias after merge'); +is($alias_set->[0]->name, 'Test Alias'); + $artist_data->alias->delete(4); $alias_set = $artist_data->alias->find_by_entity_id(4); is(scalar @$alias_set, 0); _______________________________________________ MusicBrainz-commits mailing list MusicBrainz-commits@... http://lists.musicbrainz.org/mailman/listinfo/musicbrainz-commits |
| Free embeddable forum powered by Nabble | Forum Help |