view Lib/IMPL/SQL/Schema/Type.pm @ 194:4d0e1962161c

Replaced tabs with spaces IMPL::Web::View - fixed document model, new features (control classes, document constructor parameters)
author cin
date Tue, 10 Apr 2012 20:08:29 +0400
parents d1676be8afcc
children 5c82eec23bb6
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 :constants :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