Mercurial > pub > Impl
diff lib/IMPL/SQL/Schema/Type.pm @ 407:c6e90e02dd17 ref20150831
renamed Lib->lib
author | cin |
---|---|
date | Fri, 04 Sep 2015 19:40:23 +0300 |
parents | |
children | ee36115f6a34 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/IMPL/SQL/Schema/Type.pm Fri Sep 04 19:40:23 2015 +0300 @@ -0,0 +1,98 @@ +package IMPL::SQL::Schema::Type; +use strict; +use warnings; + +use IMPL::lang qw( :compare ); +use IMPL::Const qw(:prop); +use IMPL::declare{ + base => [ + 'IMPL::Object' => undef, + 'IMPL::Object::Autofill' => '@_' + ], + props => [ + name => PROP_RO | PROP_DIRECT, + maxLength => PROP_RO | PROP_DIRECT, + scale => PROP_RO | PROP_DIRECT, + unsigned => PROP_RO | PROP_DIRECT, + zerofill => PROP_RO | PROP_DIRECT, + tag => PROP_RO | PROP_DIRECT + ] +}; + +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