BackPAN-Index

 view release on metacpan or  search on metacpan

lib/BackPAN/Index/Dist.pm  view on Meta::CPAN

use utf8;
package BackPAN::Index::Dist;

# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE

use strict;
use warnings;

use base 'DBIx::Class::Core';
__PACKAGE__->table("dists");
__PACKAGE__->add_columns(
  "name",
  { data_type => "text", is_nullable => 0 },
  "first_release",
  { data_type => "text", is_foreign_key => 1, is_nullable => 0 },
  "latest_release",
  { data_type => "text", is_foreign_key => 1, is_nullable => 0 },
  "first_date",
  { data_type => "integer", is_nullable => 0 },
  "latest_date",
  { data_type => "integer", is_nullable => 0 },
  "first_author",
  { data_type => "text", is_nullable => 0 },
  "latest_author",
  { data_type => "text", is_nullable => 0 },
  "num_releases",
  { data_type => "integer", is_nullable => 0 },
);
__PACKAGE__->set_primary_key("name");
__PACKAGE__->belongs_to(
  "first_release",
  "BackPAN::Index::Release",
  { path => "first_release" },
  { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->belongs_to(
  "latest_release",
  "BackPAN::Index::Release",
  { path => "latest_release" },
  { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->has_many(
  "releases",
  "BackPAN::Index::Release",
  { "foreign.dist" => "self.name" },
  { cascade_copy => 0, cascade_delete => 0 },
);


# Created by DBIx::Class::Schema::Loader v0.07033 @ 2012-12-27 01:39:08
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:BuglboqFzRDZo6vlK4n0yw

use Mouse;
with 'BackPAN::Index::Role::AsHash';

use overload
  q[""]         => sub { $_[0]->name },
  fallback      => 1;

sub data_methods {
    return qw(
        name num_releases
        first_release  first_date  first_author
        latest_release latest_date latest_author
    );
}

sub authors {
    my $self = shift;

    return $self->releases->search(undef, { distinct => 1 })->get_column("cpanid")->all;
}

1;

__END__

=head1 NAME

BackPAN::Index::Dist - Representing a distribution on BackPAN

=head1 SYNOPSIS

Use through BackPAN::Index.

=head1 DESCRIPTION

An object representing a distribution on BackPAN.  A distribution is
made up of releases.

=head2 releases

    my $releases = $dist->releases;

A ResultSet of this distribution's releases.

=head2 name

    my $dist_name = $dist->name;

Name of the distribution.

=head2 authors

    my @authors = $dist->authors;



( run in 2.450 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )