Manager: find_by_or_create, sichere Variante ein Objekt zu finden oder zu autovivifien.
[kivitendo-erp.git] / SL / DB / Helper / Manager.pm
index 8ebc362..b4d66da 100644 (file)
@@ -18,6 +18,14 @@ sub find_by {
   return $class->get_all(query => [ @_ ], limit => 1)->[0];
 }
 
+sub find_by_or_create {
+  my $class = shift;
+
+  my $found;
+  eval { $found = $class->find_by(@_); };
+  return defined $found ? $found : $class->object_class->new;
+}
+
 sub get_first {
   shift->get_all(
     @_,