NAME¶
MongoDBx::Class::ParsedAttribute - A Moose role for automatically expanded and
collapsed document attributes.
VERSION¶
version 1.030002
SYNOPSIS¶
# in MyApp/ParsedAttribute/URI.pm
package MyApp::ParsedAttribute::URI;
use Moose;
use namespace::autoclean;
use URI;
with 'MongoDBx::Class::ParsedAttribute';
sub expand {
my ($self, $uri_text) = @_;
return URI->new($uri_text);
}
sub collapse {
my ($self, $uri_obj) = @_;
return $uri_obj->as_string;
}
1;
# in MyApp/Schema/SomeDocumentClass.pm
has 'url' => (is => 'ro', isa => 'URI', traits => ['Parsed'], parser => 'MyApp::ParsedAttribute::URI', required => 1);
DESCRIPTION¶
This module is a Moose role meant to be consumed by classes that automatically
expand (from a MongoDB database) and collapse (to a MongoDB database)
attributes of a certain type. This is similar to DBIx::Class' InflateColumn
family of modules that do pretty much the same thing for the SQL world.
A class implementing this role with a name such as 'URI' (full package name
MongoDBx::Class::ParsedAttribute::URI or MyApp::ParsedAttribute::URI) is
expected to expand and collapse URI objects. Similarly, a class named
'NetAddr::IP' is expected to handle NetAddr::IP objects.
Currently, a DateTime parser is provided with the MongoDBx::Class distribution.
REQUIRES¶
Consuming classes must implement the following methods:
expand( $value )¶
Receives a raw attribute's value from a MongoDB document and returns the
appropriate object representing it. For example, supposing the value is an
epoch integer, the expand method might return a DateTime object.
collapse( $object )¶
Receives an object representing a parsed attribute, and returns that objects
value in a form that can be saved in the database. For example, if the object
is a DateTime object, this method might return the date's epoch integer.
AUTHOR¶
Ido Perlmuter, "<ido at ido50.net>"
BUGS¶
Please report any bugs or feature requests to "bug-mongodbx-class at
rt.cpan.org", or through the web interface at
<
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MongoDBx-Class>. I will
be notified, and then you'll automatically be notified of progress on your bug
as I make changes.
SUPPORT¶
You can find documentation for this module with the perldoc command.
perldoc MongoDBx::Class::ParsedAttribute
You can also look for information at:
- •
- RT: CPAN's request tracker
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=MongoDBx::Class>
- •
- AnnoCPAN: Annotated CPAN documentation
<http://annocpan.org/dist/MongoDBx::Class>
- •
- CPAN Ratings
<http://cpanratings.perl.org/d/MongoDBx::Class>
- •
- Search CPAN
<http://search.cpan.org/dist/MongoDBx::Class/>
SEE ALSO¶
MongoDBx::Class::EmbeddedDocument.
LICENSE AND COPYRIGHT¶
Copyright 2010-2014 Ido Perlmuter.
This program is free software; you can redistribute it and/or modify it under
the terms of either: the GNU General Public License as published by the Free
Software Foundation; or the Artistic License.
See
http://dev.perl.org/licenses/ for more information.