NAME
DBIx::DataFactory::Type - the class for defining the rule of inserting data.
SYNOPSIS
package
DBIx::DataFactory::Type::Test;
use
strict;
use
warnings;
use
Carp;
sub
type_name {
return
'Test'
;
}
sub
make_value {
my
(
$class
,
%args
) =
@_
;
return
'test'
;
}
1;
DESCRIPTION
you can define the rule of inserting data as class. you must define the method named type_name and make_value.
type_name is used to identify the class of type when create_factory_method is called. in following example, factory method insert data, defined by DBIx::DataFactory::Type::Test(see synopsis) make_value method, into 'test' column automatically.
$factory_maker
->create_factory_method(
method
=>
'create_factory_data'
,
table
=>
'test_factory'
,
auto_inserted_columns
=> {
test
=> {
type
=>
'Test'
,
},
},
);
make_value is used to define data for inserting. hash specified in auto_inserted_columns except type is passed to make_value.
$factory_maker
->create_factory_method(
method
=>
'create_factory_data'
,
table
=>
'test_factory'
,
auto_inserted_columns
=> {
test
=> {
type
=>
'Test'
,
size
=> 10,
regexp
=>
'[a-z]{10}'
,
},
},
);
when the above case, make_value will be called in create_factory_data method as following.
DBIx::DataFactory::Type::Test->make_value(
size
=> 10,
regexp
=>
'[a-z]{10}'
,
);
DEFINED TYPE
the following type is already defined in this module.
DBIx::DataFactory::Type::Int
random int maker. you can pass size parameter.
$factory_maker
->create_factory_method(
method
=>
'create_factory_data'
,
table
=>
'test_factory'
,
auto_inserted_columns
=> {
int
=> {
type
=>
'Int'
,
size
=> 8,
},
},
);
DBIx::DataFactory::Type::Num
random number maker. you can pass size parameter. size means integer part size.
$factory_maker
->create_factory_method(
method
=>
'create_factory_data'
,
table
=>
'test_factory'
,
auto_inserted_columns
=> {
num
=> {
type
=>
'Num'
,
size
=> 8,
},
},
);
DBIx::DataFactory::Type::Str
random string maker. you can pass size or regexp parameter.
if size parameter is passed, this maker produce strings like [a-zA-Z0-9]{$size}.
if regexp parameter is passed, this maker produce strings according to passed regular regexp.
$factory_maker
->create_factory_method(
method
=>
'create_factory_data'
,
table
=>
'test_factory'
,
auto_inserted_columns
=> {
str
=> {
type
=>
'Str'
,
regexp
=>
'[a-z]{20}'
,
},
},
);
DBIx::DataFactory::Type::Str
returning one of specified set in a random manner.
$factory_maker
->create_factory_method(
method
=>
'create_factory_data'
,
table
=>
'test_factory'
,
auto_inserted_columns
=> {
set
=> {
type
=>
'Set'
,
set
=> [
'test1'
,
'test2'
],
},
},
);