Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / DB / Helper / Metadata.pm
index 9ce1f11..c65bb28 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');
+
+  SL::X::DBRoseError->throw(
+    db_error   => $object->error,
+    class      => ref($object),
+    metaobject => $self,
+    object     => $object,
+  );
+}
+
 1;