From a27dd3ae50d468c4e27ae6882ecca1fc7f3891ea Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sven=20Sch=C3=B6ling?= Date: Fri, 30 Dec 2011 17:27:58 +0100 Subject: [PATCH] Manager: find_by_or_create, sichere Variante ein Objekt zu finden oder zu autovivifien. --- SL/DB/Helper/Manager.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/SL/DB/Helper/Manager.pm b/SL/DB/Helper/Manager.pm index 8ebc362e2..b4d66da42 100644 --- a/SL/DB/Helper/Manager.pm +++ b/SL/DB/Helper/Manager.pm @@ -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( @_, -- 2.20.1