Manager: find_by_or_create, sichere Variante ein Objekt zu finden oder zu autovivifien.
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 30 Dec 2011 16:27:58 +0000 (17:27 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 30 Dec 2011 16:27:58 +0000 (17:27 +0100)
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(
     @_,