Revision 672e9658
Von Moritz Bunkus vor fast 12 Jahren hinzugefügt
SL/DB/Helper/Util.pm | ||
---|---|---|
package SL::DB::Helper::Util;
|
||
|
||
use strict;
|
||
|
||
use Rose::DB::Object::Util;
|
||
|
||
use parent qw(Exporter);
|
||
our @EXPORT_OK = qw(is_unique);
|
||
|
||
#
|
||
# Public functions not exported by default
|
||
#
|
||
|
||
sub is_unique {
|
||
my ($self, @columns) = @_;
|
||
|
||
my @filter = map { ($_ => $self->$_) } @columns;
|
||
if (Rose::DB::Object::Util::is_in_db($self)) {
|
||
push @filter, map { ("!${_}" => $self->$_ )} $self->meta->primary_key;
|
||
}
|
||
|
||
return !$self->_get_manager_class->get_first(where => [ and => \@filter ]);
|
||
}
|
||
|
||
1;
|
||
|
||
__END__
|
||
|
||
=pod
|
||
|
||
=encoding utf8
|
||
|
||
=head1 NAME
|
||
|
||
SL::DB::Helper::Util - Helper functions for Rose::DB::Object instances
|
||
|
||
=head1 SYNOPSIS
|
||
|
||
package SL::DB::AuthUser;
|
||
|
||
use SL::DB::Helper::Util;
|
||
|
||
sub validate {
|
||
...
|
||
if (!SL::DB::Helper::Util::is_unique($self, 'login')) {
|
||
push @errors, "Login not unique";
|
||
}
|
||
}
|
||
|
||
=head1 OVERVIEW
|
||
|
||
This is a collection of assorted helper and utility functions for
|
||
Rose::DB::Object instances that don't require full-blown mixin helpers
|
||
like L<SL::DB::ActsAsList>. The module does not export any function by
|
||
default, but all of the public ones can be requested in the usual
|
||
way.
|
||
|
||
Each function can be called either as fully qualified name with the
|
||
object instance as the first argument or (if the function is imported)
|
||
as an intance method on the object instance.
|
||
|
||
=head1 FUNCTIONS
|
||
|
||
=over 4
|
||
|
||
=item C<is_unique @columns>
|
||
|
||
Returns trueish if C<$self> is unique in its table regarding the
|
||
columns C<@columns>. What it does is look for existing records in the
|
||
database whose stored column values match C<$self>'s current values
|
||
for these columns. If C<$self> already exists in the database then
|
||
that row is not considered during the search.
|
||
|
||
=back
|
||
|
||
=head1 BUGS
|
||
|
||
Nothing here yet.
|
||
|
||
=head1 AUTHOR
|
||
|
||
Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
|
||
|
||
=cut
|
Auch abrufbar als: Unified diff
SL::DB::Helper::Util: verschiedene RDBO-Hilfsfunktionen; Anfang: is_unique