Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 78034f24

Von Sven Schöling vor etwa 14 Jahren hinzugefügt

  • ID 78034f2431414b414d171b720bc0438635e19ae5
  • Vorgänger 4aded4e8
  • Nachfolger 4fd22b56

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

PACKAGE->meta->make_attr_helpers(column => 'type');

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.

Unterschiede anzeigen:

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