Mercurial > pub > Impl
diff Lib/IMPL/SQL/Schema/Type.pm @ 165:76515373dac0
Added Class::Template,
Rewritten SQL::Schema
'use parent' directive instead of 'use base'
author | wizard |
---|---|
date | Sat, 23 Apr 2011 23:06:48 +0400 |
parents | 16ada169ca75 |
children | 1f7a6d762394 |
line wrap: on
line diff
--- a/Lib/IMPL/SQL/Schema/Type.pm Mon Mar 28 01:36:24 2011 +0400 +++ b/Lib/IMPL/SQL/Schema/Type.pm Sat Apr 23 23:06:48 2011 +0400 @@ -1,16 +1,16 @@ use strict; package IMPL::SQL::Schema::Type; -use base qw(IMPL::Object IMPL::Object::Autofill); +use parent qw(IMPL::Object IMPL::Object::Autofill); use IMPL::Class::Property; 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; + 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; @@ -18,7 +18,7 @@ sub CTOR { my $this = shift; - $this->{$Scale} = 0 if not $this->{$Scale}; + $this->{$scale} = 0 if not $this->{$scale}; } sub isEquals { @@ -38,7 +38,67 @@ sub isSame { my ($this,$other) = @_; - return ($this->{$Name} eq $other->{$Name} and isEquals($this->{$MaxLength},$other->{$MaxLength}) and isEquals($this->{$Scale},$other->{$Scale})); + return ($this->{$name} eq $other->{$name} and isEquals($this->{$maxLength},$other->{$maxLength}) and isEquals($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 \ No newline at end of file