NAME
Tangram::PerlDump - map any Perl object as scalar dump
SYNOPSIS
use Tangram::Core;
use Tangram::PerlDump; # 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 perl_dump
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 DBMS as a scalar value. During restore, the scalar value will be eval'd to reconstruct the original data structure.
As Data::Dumper might not handle persistent references correctly, the data structure may only contain "normal" Perl references.
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 col
and sql
specify the column name and the column type for the scalar value in the database. If not present, col
defaults to the field name and sql
defaults to VARCHAR(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 (indent=0
), compact format (terse=1
), and quick dump (purity=0
).
AUTHOR
This mapping was contributed by Gabor Herr <herr@iti.informatik.tu-darmstadt.de>