package Jifty::DBI::Filter::base64;

use warnings;
use strict;

use base qw|Jifty::DBI::Filter|;
use Encode qw(encode_utf8 is_utf8);
use MIME::Base64 ();

=head1 NAME

Jifty::DBI::Filter::base64 - Encodes data as base64


This filter allow you to store arbitrary data in a column of type

=head2 encode

If value is defined, then encodes it using L<MIME::Base64/encode_base64> after
passing it through L<Encode/encode_utf8>.  Does nothing if value is not


sub encode {
    my $self = shift;

    my $value_ref = $self->value_ref;
    return unless defined $$value_ref;

    $$value_ref = MIME::Base64::encode_base64(
        is_utf8($$value_ref) ? encode_utf8($$value_ref) : $$value_ref

    return 1;

=head2 decode

If value is defined, then decodes it using
L<MIME::Base64/decode_base64>, otherwise do nothing.


sub decode {
    my $self = shift;

    my $value_ref = $self->value_ref;
    return unless defined $$value_ref;

    $$value_ref = MIME::Base64::decode_base64($$value_ref);

=head1 SEE ALSO

L<Jifty::DBI::Filter>, L<MIME::Base64>