NAME
    DBIx::Class::DigestColumns - Automatic digest columns

SYNOPSIS
    In your DBIx::Class table class:

      __PACKAGE__->load_components(qw/DigestColumns ... Core/);

      __PACKAGE__->digestcolumns(
          columns   => [qw/ password /],
          algorithm => 'MD5',
          encoding  => 'base64',
          dirty     => 1,
          auto      => 1,
      );

    Note: The component needs to be loaded *before* Core.

    Alternatively you could call each method individually

      __PACKAGE__->digest_columns(qw/ password /);
      __PACKAGE__->digest_algorithm('MD5');
      __PACKAGE__->digest_encoding('base64');
      __PACKAGE__->digest_dirty(1);
      __PACKAGE__->digest_auto(1);

DESCRIPTION
    This DBIx::Class component can be used to automatically insert a message
    digest of selected columns. By default DigestColumns will use
    Digest::MD5 to insert a 128-bit hexadecimal message digest of the column
    value.

    The length of the inserted string will be 32 and it will only contain
    characters from this set: '0'..'9' and 'a'..'f'.

    If you would like to use a specific digest module to create your message
    digest, you can set "digest_algorithm":

      __PACKAGE__->digest_algorithm('SHA-1');

METHODS
  digestcolumns
      __PACKAGE__->digestcolumns(
          columns   => [qw/ password /],
          algorithm => $algorithm',
          encoding  => $encoding,
          dirty     => 1,
          auto      => 1,
      );

    Calls "digest_columns", "digest_algorithm", and "digest_encoding" and
    "digest_auto" if the corresponding argument is defined.

  digest_columns
    Takes a list of columns to be convert to a message digest during insert.

      __PACKAGE__->digest_columns(qw/ password /);

  digest_algorithm
    Takes the name of a digest algorithm to be used to calculate the message
    digest.

      __PACKAGE__->digest_algorithm('SHA-1');

    If a suitible digest module could not be loaded an exception will be
    thrown.

    Supported digest algorithms are:

      MD5
      MD4
      MD2
      SHA-1
      SHA-256
      SHA-384
      SHA-512
      CRC-16
      CRC-32
      CRC-CCITT
      HMAC-SHA-1
      HMAC-MD5
      Whirlpool
      Adler-32

    digest_algorithm defaults to "MD5".

  digest_encoding
    Selects the encoding to use for the message digest.

      __PACKAGE__->digest_encoding('base64');

    Possilbe encoding schemes are:

      binary
      hex
      base64

    digest_encoding defaults to "hex".

  _digest_column_values
    Handles the actual encoding of column values into digests.

    This method is called by insert and update when automatic digests are
    turned on. If dirty is enabled it will only digest the values of dirtied
    columns.

  digest_auto
      __PACKAGE__->digest_auto(1);

    Turns on and off automatic digest columns. When on, this feature makes
    all UPDATEs and INSERTs automatically insert a message digest of
    selected columns.

    The default is for digest_auto is to be on.

  digest_dirty
      __PACKAGE__->digest_dirty(1);

    Turns on and off the limiting of automatic digests to only dirty
    columns. When on, only columns that have been dirtied will have their
    values digested during UPDATEs and INSERTs. If auto is set to off this
    option does nothing.

    The default is for digest_dirty is to be off to mantain compatibility
    with older versions of this module.

EXTENDED METHODS
    The following DBIx::Class::Row methods are extended by this module:-

    insert
    update

SEE ALSO
    DBIx::Class, Digest

AUTHOR
    Tom Kirkpatrick (tkp) <tkp@cpan.org>

    With contributions from Guillermo Roditi (groditi) <groditi@cpan.org>

LICENSE
    You may distribute this code under the same terms as Perl itself.

