1 package SL::DB::Helper::Util;
5 use Rose::DB::Object::Util;
7 use parent qw(Exporter);
8 our @EXPORT_OK = qw(is_unique);
11 # Public functions not exported by default
15 my ($self, @columns) = @_;
17 my @filter = map { ($_ => $self->$_) } @columns;
18 if (Rose::DB::Object::Util::is_in_db($self)) {
19 push @filter, map { ("!${_}" => $self->$_ )} $self->meta->primary_key;
22 return !$self->_get_manager_class->get_first(where => [ and => \@filter ]);
35 SL::DB::Helper::Util - Helper functions for Rose::DB::Object instances
39 package SL::DB::AuthUser;
41 use SL::DB::Helper::Util;
45 if (!SL::DB::Helper::Util::is_unique($self, 'login')) {
46 push @errors, "Login not unique";
52 This is a collection of assorted helper and utility functions for
53 Rose::DB::Object instances that don't require full-blown mixin helpers
54 like L<SL::DB::ActsAsList>. The module does not export any function by
55 default, but all of the public ones can be requested in the usual
58 Each function can be called either as fully qualified name with the
59 object instance as the first argument or (if the function is imported)
60 as an intance method on the object instance.
66 =item C<is_unique @columns>
68 Returns trueish if C<$self> is unique in its table regarding the
69 columns C<@columns>. What it does is look for existing records in the
70 database whose stored column values match C<$self>'s current values
71 for these columns. If C<$self> already exists in the database then
72 that row is not considered during the search.
82 Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>