--- lib/A3C/Record.pm 2008/04/01 19:27:06 54 +++ lib/A3C/Record.pm 2008/06/19 21:24:26 208 @@ -5,6 +5,8 @@ use base 'Jifty::Record'; +use Data::Dump qw/dump/; + =head1 NAME Custom Record class for A3C @@ -13,7 +15,8 @@ =head2 load_or_create -Perform canonicalization on C +Perform canonicalization on C and loads subset of columns +(which hopfully are indexes in model for performance reasons). =cut @@ -24,7 +27,7 @@ ( $self, $class ) = ( $class, undef ); } else { $self = $class->new(); - } + } my %args = (@_); @@ -35,7 +38,21 @@ ); } - my ( $id, $msg ) = $self->load_by_cols(%args); + my %load_cols; + + if ( ref($self) eq Jifty->app_class('Model','Person') ) { + + $load_cols{$_} = $args{$_} foreach ( qw/ + uid + hrEduPersonUniqueID + mail + / ); + + } else { + %load_cols = %args; + } + + my ( $id, $msg ) = $self->load_by_cols(%load_cols); unless ( $self->id ) { return $self->create(%args); } @@ -43,4 +60,23 @@ return ( $id, $msg ); } +=head2 create + +Serialize ARRAY values into single scalar separated by magic C<< <*> >> marker + +=cut + +sub create { + #warn "# create",dump(@_); + my $self = shift; + my %data = @_ or die "no data?"; + foreach my $col ( keys %data ) { + #warn "## ref($col)=",ref($col); + $data{$col} = join(' <*> ', @{$data{$col}}) if ref( $data{$col} ) eq 'ARRAY'; + } + #warn "## data = ",dump( %data ); + $self->SUPER::create( %data ); +} + + 1;