DBIx::Class::DigestColumns::Lite - easy to use Digest Value for DBIx::Class


DBIx-Class-DigestColumns-Lite documentation Contained in the DBIx-Class-DigestColumns-Lite distribution.

Index


Code Index:

NAME

Top

DBIx::Class::DigestColumns::Lite - easy to use Digest Value for DBIx::Class

SYNOPSIS

Top

    package DBIC::Schema::User;
    use base 'DBIx::Class';
    __PACKAGE__->load_components(qw/DigestColumns::Lite PK::Auto Core/);
    ....
    __PACKAGE__->digest_columns(qw/passwd/);
    __PACKAGE__->digest_key('no not yet...');

DESCRIPTION

Top

you can easy to use Digest Value. This module use Digest::SHA1.

METHOD

Top

digest_columns

set digest columns colum name.

store_column

auto set digest value.

digest

get digested value.

BUGS AND LIMITATIONS

Top

No bugs have been reported.

AUTHOR

Top

Atsushi Kobayashi <atsushi __at__ mobilefactory.jp>

LICENCE AND COPYRIGHT

Top


DBIx-Class-DigestColumns-Lite documentation Contained in the DBIx-Class-DigestColumns-Lite distribution.

package DBIx::Class::DigestColumns::Lite;
use strict;
use warnings;
use base 'DBIx::Class';
use Digest::SHA1 ();

our $VERSION = 0.03;

__PACKAGE__->mk_classdata( force_digest_columns => [] );
__PACKAGE__->mk_classdata( digest_key => '');

sub digest {
    my ($self ,$val) = @_;
    return Digest::SHA1::sha1_hex(($val || '') . ($self->digest_key || ''));
}

sub digest_columns {
    my $self = shift;

    for (@_) {
        $self->throw_exception("column $_ doesn't exist")
            unless $self->has_column($_);
    }

    $self->force_digest_columns( \@_ );
}

sub store_column {
    my ( $self, $column, $value ) = @_;

    if ( { map { $_ => 1 } @{ $self->force_digest_columns } }->{$column} ) {
        $value = $self->digest($value);
    }

    $self->next::method( $column, $value );
}

1;
__END__