DBIx-Class-ResultDDL
view release on metacpan or search on metacpan
lib/DBIx/Class/ResultDDL/V0.pm view on Meta::CPAN
=over
=item null
is_nullable => 1
=item auto_inc
is_auto_increment => 1
=item fk
is_foreign_key => 1
=item default($value | @value)
default_value => $value
default_value => [ @value ] # if more than one param
=item integer, integer($size)
data_type => 'integer', size => $size // 11
=item unsigned
extra => { unsigned => 1 }
MySQL specific flag to be combined with C<integer>
=item tinyint
data_type => 'tinyint', size => 4
=item smallint
data_type => 'smallint', size => 6
=item bigint
data_type => 'bigint', size => 22
=item decimal( $whole, $deci )
data_type => 'decimal', size => [ $whole, $deci ]
=item numeric( $whole, $deci )
data_type => 'numeric', size => [ $whole, $deci ]
=item char, char($size)
data_type => 'char', size => $size // 1
=item varchar, varchar($size), varchar(MAX)
data_type => 'varchar', size => $size // 255
=item nchar
SQL Server specific type for unicode char
=item nvarchar, nvarchar($size), nvarchar(MAX)
SQL Server specific type for unicode character data.
data_type => 'nvarchar', size => $size // 255
=item MAX
Constant for 'MAX', used by SQL Server for C<< varchar(MAX) >>.
=item binary, binary($size)
data_type => 'binary', size => $size // 255
=item varbinary, varbinary($size)
data_type => 'varbinary', size => $size // 255
=item blob, blob($size)
data_type => 'blob',
size => $size if defined $size
Note: For MySQL, you need to change the type according to '$size'. A MySQL blob is C<< 2^16 >>
max length, and probably none of your binary data would be that small. Consider C<mediumblob>
or C<longblob>, or consider overriding C<< My::Schema::sqlt_deploy_hook >> to perform this
conversion automatically according to which DBMS you are connected to.
For SQL Server, newer versions deprecate C<blob> in favor of C<VARCHAR(MAX)>. This is another
detail you might take care of in sqlt_deploy_hook.
=item tinyblob
MySQL-specific type for small blobs
data_type => 'tinyblob', size => 0xFF
=item mediumblob
MySQL-specific type for larger blobs
data_type => 'mediumblob', size => 0xFFFFFF
=item longblob
MySQL-specific type for the longest supported blob type
data_type => 'longblob', size => 0xFFFFFFFF
=item text, text($size)
data_type => 'text',
size => $size if defined $size
See MySQL notes in C<blob>. For SQL Server, you might want C<ntext> or C<< varchar(MAX) >> instead.
=item tinytext
data_type => 'tinytext', size => 0xFF
=item mediumtext
data_type => 'mediumtext', size => 0xFFFFFF
=item longtext
data_type => 'longtext', size => 0xFFFFFFFF
=item ntext
SQL-Server specific type for unicode C<text>. Note that newer versions prefer C<< nvarchar(MAX) >>.
data_type => 'ntext', size => 0x3FFFFFFF
=item enum( @values )
data_type => 'enum', extra => { list => [ @values ] }
=item bool, boolean
data_type => 'boolean'
Note that SQL Server has 'bit' instead.
=item bit, bit($size)
data_type => 'bit', size => $size // 1
To be database agnostic, consider using 'bool' and override C<< My::Scema::sqlt_deploy_hook >>
to rewrite it to 'bit' when deployed to SQL Server.
=item date, date($timezone)
data_type => 'date'
time_zone => $timezone if defined $timezone
=item datetime, datetime($timezone)
data_type => 'datetime'
time_zone => $timezone if defined $timezone
=item timestamp, timestamp($timezone)
date_type => 'timestamp'
time_zone => $timezone if defined $timezone
=item inflate_json
serializer_class => 'JSON'
Also adds the component 'InflateColumn::Serializer' to the current package if it wasn't
added already.
=back
=head2 primary_key
primary_key(@cols)
Shortcut for __PACKAGE__->set_primary_key(@cols)
=head2 belongs_to
belongs_to $rel_name, $peer_class, $condition, @attr_list;
belongs_to $rel_name, { colname => "$ResultClass.$colname" }, @attr_list;
# becomes...
__PACKAGE__->belongs_to($rel_name, $peer_class, $condition, { @attr_list });
Note that the normal DBIC belongs_to requires conditions to be of the form
{ "foreign.$their_col" => "self.$my_col" }
( run in 1.486 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )