From 786be2e7c180cf782d197fb03fedd1fd69029da9 Mon Sep 17 00:00:00 2001 From: Mauricio Giacomini Girardello <mauriciogiacomini4@gmail.com> Date: Mon, 19 Oct 2015 11:50:15 -0200 Subject: [PATCH] raise an exception when p_id of orientdb user class will be duplicated --- app/models/duplicated_user_index_error.rb | 2 ++ app/repositories/orient_db/user_repository.rb | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 app/models/duplicated_user_index_error.rb diff --git a/app/models/duplicated_user_index_error.rb b/app/models/duplicated_user_index_error.rb new file mode 100644 index 000000000..1356e37c3 --- /dev/null +++ b/app/models/duplicated_user_index_error.rb @@ -0,0 +1,2 @@ +class DuplicatedUserIndexError < Orientdb4r::ServerError +end \ No newline at end of file diff --git a/app/repositories/orient_db/user_repository.rb b/app/repositories/orient_db/user_repository.rb index d7f3a8787..cb6a97b4b 100644 --- a/app/repositories/orient_db/user_repository.rb +++ b/app/repositories/orient_db/user_repository.rb @@ -2,9 +2,15 @@ module OrientDb class UserRepository < Base def create_graph_node(user) - if user.persisted? - connection.command sprintf("create vertex User set p_id = %d", user.id) - return true + begin + if user.persisted? + connection.command sprintf("create vertex User set p_id = %d", user.id) + return true + end + rescue Orientdb4r::ServerError => e + if e.message =~ /ORecordDuplicatedException/ + raise DuplicatedUserIndexError, 'The OrientDB index p_id of User class cannot be duplicated.' + end end raise NotPersistedRecordError, 'The user wasn`t persisted yet.' -- GitLab