Luke Saunders > DBIx-Class-ResultSet-WithMetaData-0.999002 > DBIx::Class::ResultSet::WithMetaData

Download:
DBIx-Class-ResultSet-WithMetaData-0.999002.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
Report a bug
Module Version: 0.999002   Source  

VERSION ^

Version 0.999002

NAME ^

DBIx::Class::ResultSet::WithMetaData

SYNOPSIS ^

  package MyApp::Schema::ResultSet::ObjectType;

  use Moose;
  use MooseX::Method::Signatures;
  extends 'DBIx::Class::ResultSet::WithMetaData;

  method with_substr () {
    foreach my $row ($self->all) {
      my $substr = substr($row->name, 0, 3);
      $self->add_row_info(row => $row, info => { substr => $substr });
    }
    return $self;
  }

  ...


  # then somewhere else

  my $object_type_arrayref = $object_type_rs->with_substr->display();

  # [{
  #    'artistid' => '1',
  #    'name' => 'Caterwauler McCrae',
  #    'substr' => 'Cat'
  #  },
  #  {
  #    'artistid' => '2',
  #    'name' => 'Random Boy Band',
  #    'substr' => 'Ran'
  #  },
  #  {
  #    'artistid' => '3',
  #    'name' => 'We Are Goth',
  #    'substr' => 'We '
  #  }]

DESCRIPTION ^

Attach metadata to rows by chaining ResultSet methods together. When the ResultSet is flattened to an ArrayRef the attached metadata is merged with the row hashes to give a combined 'hash-plus-other-stuff' representation.

METHODS ^

display

Arguments: none
Return Value: ArrayRef
 $arrayref_of_row_hashrefs = $rs->display();

This method uses DBIx::Class::ResultClass::HashRefInflator to convert all rows in the ResultSet to HashRefs. These are then merged with any metadata that had been attached to the rows using "add_row_info".

add_row_info

Arguments: row => DBIx::Class::Row object, info => HashRef to attach to the row
Return Value: ResultSet
 $rs = $rs->add_row_info(row => $row, info => { dates => [qw/mon weds fri/] } );

This method allows you to attach a HashRef of metadata to a row which will be merged with that row when the ResultSet is flattened to a datastructure with "display".

AUTHOR ^

  Luke Saunders <luke.saunders@gmail.com>

THANKS ^

As usual, thanks to Matt S Trout for the sanity check.

LICENSE ^

  This library is free software under the same license as perl itself