SYNOPSIS

   use Tangram::Core;
   use Tangram::Type::Dump::Perl; # always

   $schema = Tangram::Schema->new(
      classes => { NaturalPerson => { fields => {

      perl_dump =>
      {
         diary => # diary is a perl hash
         {
            col => 'diarydata',
            sql => 'TEXT',
            indent => 0,
            terse => 1,
            purity => 0
         },

         lucky_numbers => 'int', # use defaults
      }

DESCRIPTION

Maps arbitrary Perl data structures by serializing to a string representation. The persistent fields are grouped in a hash under the \*(C`perl_dump\*(C' key in the field hash.

Serialization is done by Data::Dumper, which traverses the Perl data structure and creates a string representation of it. The resulting string will be mapped to the \s-1DBMS\s0 as a scalar value. During restore, the scalar value will be eval'd to reconstruct the original data structure.

As of Tangram 2.07.1, persistent references are safely handled via the Tangram::Type::Dump utility class.

The field names are passed in a hash that associates a field name with a field descriptor. The field descriptor may be either a hash or a string. The hash uses the following fields:

  • col

  • sql

  • indent

  • terse

  • purity

The optional fields \*(C`col\*(C' and \*(C`sql\*(C' specify the column name and the column type for the scalar value in the database. If not present, \*(C`col\*(C' defaults to the field name and \*(C`sql\*(C' defaults to \s-1VARCHAR\s0(255). Values will be always quoted as they are passed to the database.

The remaining optional fields control the serialization process. They will be passed down to Data::Dumper as values to the corresponding Data::Dumper options. The default settings are: no indentation (\*(C`indent=0\*(C'), compact format (\*(C`terse=1\*(C'), and quick dump (\*(C`purity=0\*(C').

AUTHOR

This mapping was contributed by Gabor Herr <[email protected]>