comparison 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
comparison
equal deleted inserted replaced
406:f23fcb19d3c1 407:c6e90e02dd17
1 package IMPL::SQL::Schema::Type;
2 use strict;
3 use warnings;
4
5 use IMPL::lang qw( :compare );
6 use IMPL::Const qw(:prop);
7 use IMPL::declare{
8 base => [
9 'IMPL::Object' => undef,
10 'IMPL::Object::Autofill' => '@_'
11 ],
12 props => [
13 name => PROP_RO | PROP_DIRECT,
14 maxLength => PROP_RO | PROP_DIRECT,
15 scale => PROP_RO | PROP_DIRECT,
16 unsigned => PROP_RO | PROP_DIRECT,
17 zerofill => PROP_RO | PROP_DIRECT,
18 tag => PROP_RO | PROP_DIRECT
19 ]
20 };
21
22 sub CTOR {
23 my $this = shift;
24
25 $this->{$scale} = 0 if not $this->{$scale};
26 }
27
28 sub SameValue {
29 my ($this,$other) = @_;
30
31 return (
32 $this->{$name} eq $other->name
33 and equals($this->{$maxLength},$other->{$maxLength})
34 and equals($this->{$scale},$other->{$scale})
35 );
36 }
37
38 1;
39
40 __END__
41
42 =pod
43
44 =head1 NAME
45
46 C<IMPL::SQL::Schema::Type> Описывает SQL типы данных
47
48 =head1 SYNOPSIS
49
50 =begin code
51
52 use IMPL::SQL::Schema::Type;
53
54 my $varchar_t = new IMPL::SQL::Schema::Type( name => 'varchar', maxLength => 255 );
55
56 my $real_t = new IMPL::SQL::Schema::Type( name => 'float', maxLength=> 10, scale => 4); # mysql: float(10,4)
57
58 =end
59
60 Данный класс используется для стандатрного описания SQL типов данных. В зависимости
61 от движка БД эти объекты могут быть представлены различными строковыми представлениями.
62
63 =head1 MEMBERS
64
65 =over
66
67 =item C<CTOR(%props)>
68
69 Конструктор, заполняет объект значениями которые были переданы в конструкторе.
70
71 =item C<[get]name>
72
73 Имя типа. Обязательно.
74
75 =item C<[get]maxLength>
76
77 Максимальная длина, используется только для типов, имеющих длину (либо переменную,
78 либо постоянную).
79
80 =item C<[get]scale>
81
82 Точность, количество знаков после запятой. Используется вместе с C<maxLength>.
83
84 =item C<[get]unsigned>
85
86 Используется с числовыми данными, обозначает беззнаковые типы.
87
88 =item C<[get]zerofill>
89
90 Нестандартный атрибут дополняющий числа лидирующими нулями до C<maxLength>.
91
92 =item C<[get]tag>
93
94 Хеш с дополнительными опциями.
95
96 =back
97
98 =cut