DB Transaktionen - Fehler nach oben durchreichen
[kivitendo-erp.git] / SL / DB / Helper / Metadata.pm
index 9ce1f11..4eaa106 100644 (file)
@@ -1,6 +1,7 @@
 package SL::DB::Helper::Metadata;
 
 use strict;
+use SL::X;
 
 use Rose::DB::Object::Metadata;
 use SL::DB::Helper::ConventionManager;
@@ -31,4 +32,18 @@ sub make_attr_auto_helpers {
   SL::DB::Helper::Attr::auto_make($self->class);
 }
 
+sub handle_error {
+  my($self, $object) = @_;
+
+  # these are used as Rose internal canaries, don't wrap them
+  die $object->error if UNIVERSAL::isa($object->error, 'Rose::DB::Object::Exception');
+
+  die SL::X::DBRoseError->new(
+    error      => $object->error,
+    class      => ref($object),
+    metaobject => $self,
+    object     => $object,
+  );
+}
+
 1;