/** * @inheritdoc */ public function save(MessageModel $message) : MessageModel { $this->em->beginTransaction(); try { $this->em->persist($message); $this->em->flush(); $this->em->commit(); return $message; } catch (UniqueConstraintViolationException $ex) { $this->em->rollBack(); throw new InvalidArgumentException('Title is already registered', 409, $ex); } catch (Exception $ex) { $this->em->rollBack(); throw new InvalidArgumentException($ex->getMessage(), 500, $ex); } }