Mercurial > pub > Impl
view Lib/IMPL/SQL/Schema/Type.pm @ 250:129e48bb5afb
DOM refactoring
ObjectToDOM methods are virtual
QueryToDOM uses inflators
Fixed transform for the complex values in the ObjectToDOM
QueryToDOM doesn't allow to use complex values (HASHes) as values for nodes (overpost problem)
author | sergey |
---|---|
date | Wed, 07 Nov 2012 04:17:53 +0400 |
parents | 5c82eec23bb6 |
children | 4ddb27ff4a0b |
line wrap: on
line source
use strict; use warnings; package IMPL::SQL::Schema::Type; use parent qw(IMPL::Object IMPL::Object::Autofill); use IMPL::lang qw( :declare :compare ); use IMPL::Class::Property::Direct; BEGIN { public _direct property name => PROP_GET; public _direct property maxLength => PROP_GET; public _direct property scale => PROP_GET; public _direct property unsigned => PROP_GET; public _direct property zerofill => PROP_GET; public _direct property tag => PROP_GET; } __PACKAGE__->PassThroughArgs; sub CTOR { my $this = shift; $this->{$scale} = 0 if not $this->{$scale}; } sub SameValue { my ($this,$other) = @_; return ( $this->{$name} eq $other->name and equals($this->{$maxLength},$other->{$maxLength}) and equals($this->{$scale},$other->{$scale}) ); } 1; __END__ =pod =head1 NAME C<IMPL::SQL::Schema::Type> Описывает SQL типы данных =head1 SYNOPSIS =begin code use IMPL::SQL::Schema::Type; my $varchar_t = new IMPL::SQL::Schema::Type( name => 'varchar', maxLength => 255 ); my $real_t = new IMPL::SQL::Schema::Type( name => 'float', maxLength=> 10, scale => 4); # mysql: float(10,4) =end Данный класс используется для стандатрного описания SQL типов данных. В зависимости от движка БД эти объекты могут быть представлены различными строковыми представлениями. =head1 MEMBERS =over =item C<CTOR(%props)> Конструктор, заполняет объект значениями которые были переданы в конструкторе. =item C<[get]name> Имя типа. Обязательно. =item C<[get]maxLength> Максимальная длина, используется только для типов, имеющих длину (либо переменную, либо постоянную). =item C<[get]scale> Точность, количество знаков после запятой. Используется вместе с C<maxLength>. =item C<[get]unsigned> Используется с числовыми данными, обозначает беззнаковые типы. =item C<[get]zerofill> Нестандартный атрибут дополняющий числа лидирующими нулями до C<maxLength>. =item C<[get]tag> Хеш с дополнительными опциями. =back =cut