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