Mercurial > pub > Impl
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 |