Skip to content

Commit

Permalink
Split and remove Data::CoreEntity empty package
Browse files Browse the repository at this point in the history
As all the code of this package has been moved to separate roles, it can
be removed entirely, thus allowing for better requirements in roles for
`_type` and `_hash_to_row`.

- Drop using Sql which wasn’t actually used anyway.
- Move applying Role::Name directly to the Data entity classes.
- Move applying other roles to the new Role::Relatable but for the two
  non-relatable entity types: collection and track.
- Update Role::GIDRedirect test accordingly.
  • Loading branch information
yvanzo committed Oct 27, 2022
1 parent f6901a7 commit 6647f3a
Show file tree
Hide file tree
Showing 17 changed files with 66 additions and 25 deletions.
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Area.pm
Expand Up @@ -21,7 +21,9 @@ use MusicBrainz::Server::Data::Utils qw(
);
use MusicBrainz::Server::Data::Utils::Cleanup qw( used_in_relationship );

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'area' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'area' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Artist.pm
Expand Up @@ -23,7 +23,9 @@ use MusicBrainz::Server::Data::Utils::Cleanup qw( used_in_relationship );
use MusicBrainz::Server::Data::Utils::Uniqueness qw( assert_uniqueness_conserved );
use Scalar::Util qw( looks_like_number );

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'artist' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'artist' };
with 'MusicBrainz::Server::Data::Role::Area';
Expand Down
8 changes: 7 additions & 1 deletion lib/MusicBrainz/Server/Data/Collection.pm
Expand Up @@ -13,7 +13,13 @@ use MusicBrainz::Server::Data::Utils qw(
use List::AllUtils qw( any uniq uniq_by zip );
use MusicBrainz::Server::Constants qw( entities_with );

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::EntityModelClass';
with 'MusicBrainz::Server::Data::Role::GetByGID';
with 'MusicBrainz::Server::Data::Role::MainTable';
with 'MusicBrainz::Server::Data::Role::GID';
with 'MusicBrainz::Server::Data::Role::GIDRedirect';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Subscription' => {
table => 'editor_subscribe_collection',
column => 'collection',
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Event.pm
Expand Up @@ -20,7 +20,9 @@ use MusicBrainz::Server::Data::Utils qw(
);
use MusicBrainz::Server::Data::Utils::Cleanup qw( used_in_relationship );

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'event' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'event' };
with 'MusicBrainz::Server::Data::Role::Area';
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Genre.pm
Expand Up @@ -7,7 +7,9 @@ use MusicBrainz::Server::Data::Utils qw(
);
use MusicBrainz::Server::Entity::Genre;

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'genre' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'genre' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Instrument.pm
Expand Up @@ -10,7 +10,9 @@ use MusicBrainz::Server::Data::Utils qw(
);
use MusicBrainz::Server::Entity::Instrument;

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'instrument' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'instrument' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Label.pm
Expand Up @@ -20,7 +20,9 @@ use MusicBrainz::Server::Data::Utils qw(
use MusicBrainz::Server::Data::Utils::Cleanup qw( used_in_relationship );
use MusicBrainz::Server::Data::Utils::Uniqueness qw( assert_uniqueness_conserved );

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'label' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'label' };
with 'MusicBrainz::Server::Data::Role::Area';
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Place.pm
Expand Up @@ -19,7 +19,9 @@ use MusicBrainz::Server::Data::Utils qw(
);
use MusicBrainz::Server::Data::Utils::Cleanup qw( used_in_relationship );

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'place' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'place' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Recording.pm
Expand Up @@ -17,7 +17,9 @@ use aliased 'MusicBrainz::Server::Entity::PartialDate';
use MusicBrainz::Server::Entity::Recording;
use MusicBrainz::Server::Entity::Util::JSON qw( to_json_array );

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'recording' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
with 'MusicBrainz::Server::Data::Role::DeleteAndLog' => { type => 'recording' };
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Release.pm
Expand Up @@ -31,7 +31,9 @@ use MusicBrainz::Server::Translation qw( comma_list N_l );
use MusicBrainz::Server::Validation qw( encode_entities );
use aliased 'MusicBrainz::Server::Entity::Artwork';

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'release' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
with 'MusicBrainz::Server::Data::Role::DeleteAndLog' => { type => 'release' };
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/ReleaseGroup.pm
Expand Up @@ -18,7 +18,9 @@ use MusicBrainz::Server::Data::Utils::Cleanup qw( used_in_relationship );

use MusicBrainz::Server::Constants qw( $STATUS_OPEN );

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'release_group' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
with 'MusicBrainz::Server::Data::Role::DeleteAndLog' => { type => 'release_group' };
Expand Down
@@ -1,29 +1,32 @@
package MusicBrainz::Server::Data::CoreEntity;
package MusicBrainz::Server::Data::Role::Relatable;

use Moose;
use Moose::Role;
use namespace::autoclean;
use Sql;

extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::EntityModelClass';
with 'MusicBrainz::Server::Data::Role::GetByGID';
with 'MusicBrainz::Server::Data::Role::MainTable';
with 'MusicBrainz::Server::Data::Role::GID';
with 'MusicBrainz::Server::Data::Role::GIDRedirect';
with 'MusicBrainz::Server::Data::Role::Name';

__PACKAGE__->meta->make_immutable;
no Moose;
no Moose::Role;
1;

=head1 NAME
MusicBrainz::Server::Data::CoreEntity
MusicBrainz::Server::Data::Role::Relatable
=head1 DESCRIPTION
One role to relate them all!
Group roles associated to entity types supporting relationships,
and by extension having main table, model, GID, and GID redirect.
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2009,2011 Lukas Lalinsky
Copyright (C) 2010 MetaBrainz Foundation
Copyright (C) 2010-2022 MetaBrainz Foundation
This file is part of MusicBrainz, the open internet music database,
and is licensed under the GPL version 2, or (at your option) any
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Series.pm
Expand Up @@ -18,7 +18,9 @@ use MusicBrainz::Server::Data::Utils::Uniqueness qw( assert_uniqueness_conserved
use MusicBrainz::Server::Entity::Series;
use MusicBrainz::Server::Entity::SeriesType;

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'series' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'series' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
Expand Down
8 changes: 7 additions & 1 deletion lib/MusicBrainz/Server/Data/Track.pm
Expand Up @@ -15,7 +15,13 @@ use MusicBrainz::Server::Data::Utils qw(
);
use aliased 'MusicBrainz::Server::Entity::Work';

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::EntityModelClass';
with 'MusicBrainz::Server::Data::Role::GetByGID';
with 'MusicBrainz::Server::Data::Role::MainTable';
with 'MusicBrainz::Server::Data::Role::GID';
with 'MusicBrainz::Server::Data::Role::GIDRedirect';
with 'MusicBrainz::Server::Data::Role::Name';

with 'MusicBrainz::Server::Data::Role::Editable' => { table => 'track' };

Expand Down
3 changes: 2 additions & 1 deletion lib/MusicBrainz/Server/Data/URL.pm
Expand Up @@ -7,7 +7,8 @@ use MusicBrainz::Server::Data::Utils qw( generate_gid hash_to_row );
use MusicBrainz::Server::Entity::URL;
use URI;

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with
'MusicBrainz::Server::Data::Role::Editable' => { table => 'url' },
'MusicBrainz::Server::Data::Role::LinksToEdit' => { table => 'url' },
Expand Down
4 changes: 3 additions & 1 deletion lib/MusicBrainz/Server/Data/Work.pm
Expand Up @@ -16,7 +16,9 @@ use MusicBrainz::Server::Entity::Work;
use MusicBrainz::Server::Entity::WorkAttribute;
use MusicBrainz::Server::Entity::WorkAttributeType;

extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::Relatable';
with 'MusicBrainz::Server::Data::Role::Name';
with 'MusicBrainz::Server::Data::Role::Annotation' => { type => 'work' };
with 'MusicBrainz::Server::Data::Role::Alias' => { type => 'work' };
with 'MusicBrainz::Server::Data::Role::GIDEntityCache';
Expand Down
3 changes: 2 additions & 1 deletion t/lib/t/MusicBrainz/Server/Data/Role/GIDEntityCache.pm
Expand Up @@ -15,7 +15,8 @@ with 't::Context' => { -excludes => '_build_context' };

package t::GIDEntityCache::MyEntityData;
use Moose;
extends 'MusicBrainz::Server::Data::CoreEntity';
extends 'MusicBrainz::Server::Data::Entity';
with 'MusicBrainz::Server::Data::Role::GetByGID';
has 'get_by_id_called' => ( is => 'rw', isa => 'Bool', default => 0 );
has 'get_by_gid_called' => ( is => 'rw', isa => 'Bool', default => 0 );
sub get_by_ids
Expand Down

0 comments on commit 6647f3a

Please sign in to comment.