| Jifty-DBI documentation | Contained in the Jifty-DBI distribution. |
Jifty::DBI::Filter - base class for Jifty::DBI filters
# To implement your own filter
package MyApp::Filter::Uppercase;
use base qw/ Jifty::DBI::Filter /;
# Setup for DB storage, store in lowercase
sub encode {
my $self = shift;
my $value_ref = $self->value_ref;
return unless defined $$value_ref; # don't blow up on undef
$$value_ref = lc $$value_ref;
}
# Setup for Perl code to use, always sees uppercase
sub decode {
my $self = shift;
my $value_ref = $self->value_ref;
return unless defined $$value_ref; # don't blow up on undef
$$value_ref = uc $$value_ref;
}
# To use a filter
use MyApp::Record schema {
column filtered =>
type is 'text',
filters are qw/ MyApp::Filter::Uppercase /;
};
A filter allows Jifty::DBI models to tweak data prior to being stored and/or loaded. This is useful for marshalling and unmarshalling complex objects.
Takes three arguments in a parameter hash:
A reference to the current value you're going to be
massaging. encode works in place, massaging whatever value_ref
refers to.
A Jifty::DBI::Column object, whatever sort of column we're working with here.
A Jifty::DBI::Handle object, because some filters (i.e. Jifty::DBI::Filter::Boolean) depend on what database system is being used.
encode takes data that users are handing to us and marshals it into
a form suitable for sticking it in the database. This could be anything
from flattening a DateTime object into an ISO date to making sure
that data is utf8 clean.
decode takes data that the database is handing back to us and gets
it into a form that's OK to hand back to the user. This could be
anything from inflating an ISO date to a DateTime object to
making sure that the string properly has the utf8 flag.
Jifty::DBI::Filter::Date, Jifty::DBI::Filter::DateTime, Jifty::DBI::Filter:SaltHash, Jifty::DBI::Filter::Storable, Jifty::DBI::Filter::Time, Jifty::DBI::Filter::Truncate, Jifty::DBI::Filter::YAML, Jifty::DBI::Filter::base64, Jifty::DBI::Filter::utf8
Jifty::DBI is Copyright 2005-2007 Best Practical Solutions, LLC. Jifty::DBI is distributed under the same terms as Perl itself.
| Jifty-DBI documentation | Contained in the Jifty-DBI distribution. |
use warnings; use strict; package Jifty::DBI::Filter; use base 'Class::Accessor::Fast'; __PACKAGE__->mk_accessors(qw(record column value_ref handle));
sub new { my $class = shift; my %args = ( column => undef, value_ref => undef, handle => undef, @_ ); my $self = $class->SUPER::new( { record => delete $args{record}, column => delete $args{column}, value_ref => delete $args{value_ref}, handle => delete $args{handle}, } ); for ( grep $self->can($_), keys %args ) { $self->$_( $args{$_} ); } return ($self); }
sub encode { }
sub decode { }
1;