Revision 78034f24
Von Sven Schöling vor etwa 14 Jahren hinzugefügt
SL/DB/Object.pm | ||
---|---|---|
7 | 7 |
use List::MoreUtils qw(any); |
8 | 8 |
|
9 | 9 |
use SL::DB; |
10 |
use SL::DB::Helpers::AttrNumber; |
|
11 |
use SL::DB::Helpers::AttrDate; |
|
12 |
use SL::DB::Helpers::AttrPercent; |
|
10 |
use SL::DB::Helpers::Attr; |
|
13 | 11 |
use SL::DB::Helpers::Metadata; |
14 | 12 |
use SL::DB::Helpers::Manager; |
15 | 13 |
|
... | ... | |
80 | 78 |
return $self; |
81 | 79 |
} |
82 | 80 |
|
83 |
sub make_attr_helper { |
|
84 |
my ($self) = @_; |
|
85 |
my $package = ref $self || $self; |
|
86 |
|
|
87 |
for my $col ($package->meta->columns) { |
|
88 |
next if $col->primary_key_position; # don't make attr helper for primary keys |
|
89 |
|
|
90 |
attr_number ($package, $col->name, -2) if $col->type =~ /numeric | real | float/xi; |
|
91 |
attr_percent($package, $col->name, -2) if $col->type =~ /numeric | real | float/xi; |
|
92 |
attr_number ($package, $col->name, 0) if $col->type =~ /int/xi; |
|
93 |
attr_date ($package, $col->name) if $col->type =~ /date | timestamp/xi; |
|
94 |
} |
|
95 |
|
|
96 |
return $self; |
|
97 |
} |
|
98 |
|
|
99 |
sub attr_number { |
|
100 |
SL::DB::Helpers::AttrNumber::define(@_); |
|
101 |
} |
|
102 |
|
|
103 |
sub attr_date { |
|
104 |
SL::DB::Helpers::AttrDate::define(@_); |
|
105 |
} |
|
106 |
|
|
107 |
sub attr_percent { |
|
108 |
SL::DB::Helpers::AttrPercent::define(@_); |
|
109 |
} |
|
110 |
|
|
111 | 81 |
1; |
112 | 82 |
|
113 | 83 |
__END__ |
Auch abrufbar als: Unified diff
Attribute Helper umgeschrieben.
Siehe Dokumentation SL::DB::Helpers::Attr.
Attributhelper werden jetzt beim Rose Start automatisch geladen.
numeric Felder bekommen immer einen as_number udn einen as_percent helper.
date Felder bekommen immer einen as_date helper.
as_date Helper kann jetzt auch mit 'now' umgehen.
Zusaätzliche Helper können zur Compilezeit mit
erstellt werden, wobei 'type' einfach das ist, was auch bei der autdetection
ind er Datenbank erkannt wird, z.B. "numeric(15,5)" oder "date". Die passenden
Helper werden dann installiert.