SL::DB::Manager: find_by_or_create bubbelt jetzt exceptions
[kivitendo-erp.git] / SL / DB / Helper / Manager.pm
1 package SL::DB::Helper::Manager;
2
3 use strict;
4
5 use Rose::DB::Object::Manager;
6 use base qw(Rose::DB::Object::Manager);
7
8 sub make_manager_methods {
9   my $class  = shift;
10   my @params = scalar(@_) ? @_ : qw(all);
11   return $class->SUPER::make_manager_methods(@params);
12 }
13
14 sub find_by {
15   my $class = shift;
16
17   return if !@_;
18   return $class->get_all(query => [ @_ ], limit => 1)->[0];
19 }
20
21 sub find_by_or_create {
22   my $class = shift;
23
24   my $found;
25   eval {
26     $found = $class->find_by(@_);
27     1;
28   } or die $@;
29   return defined $found ? $found : $class->object_class->new;
30 }
31
32 sub get_first {
33   shift->get_all(
34     @_,
35     limit => 1,
36   )->[0];
37 }
38
39 1;