From cb7c28e7a38e55b0e5b6a477dfe24e4a96e09dab Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Thu, 21 Jan 2016 21:23:27 +0100 Subject: database: handle sqlite constraint exception specially --- src/database/database.vala | 4 +++- src/database/db-interface.vala | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/database/database.vala b/src/database/database.vala index 5df63b6..0db7df0 100644 --- a/src/database/database.vala +++ b/src/database/database.vala @@ -511,7 +511,9 @@ public class DataBase : Object { statements["product_create"].bind_int(4, 0); int rc = statements["product_create"].step(); - if(rc != Sqlite.DONE) { + if(rc == Sqlite.CONSTRAINT) { + throw new DatabaseError.CONSTRAINT_FAILED(db.errmsg()); + } else if(rc != Sqlite.DONE) { throw new DatabaseError.INTERNAL_ERROR("internal error: %d", rc); } diff --git a/src/database/db-interface.vala b/src/database/db-interface.vala index f49a627..31a12ba 100644 --- a/src/database/db-interface.vala +++ b/src/database/db-interface.vala @@ -185,5 +185,6 @@ public errordomain DatabaseError { INTERNAL_ERROR, PRODUCT_NOT_FOUND, SESSION_NOT_FOUND, - USER_NOT_FOUND + USER_NOT_FOUND, + CONSTRAINT_FAILED, } -- cgit v1.2.3