Mercurial > pub > Impl
view 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 source
use strict; package IMPL::SQL::Schema::Type; 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; } __PACKAGE__->PassThroughArgs; sub CTOR { my $this = shift; $this->{$scale} = 0 if not $this->{$scale}; } sub isEquals { my ($a,$b) = @_; if (defined $a and defined $b) { return $a == $b; } else { if (defined $a or defined $b) { return 0; } else { return 1; } } } sub isSame { my ($this,$other) = @_; 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