summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2016-01-21 21:23:27 +0100
committerSebastian Reichel <sre@ring0.de>2016-01-21 21:23:27 +0100
commitcb7c28e7a38e55b0e5b6a477dfe24e4a96e09dab (patch)
tree6dce0b0bfb24476e12ad08aa9a60e86e186083af
parentcf2e52f7e6bcc4dc87315ec0d9aed010b1ceb4d6 (diff)
downloadserial-barcode-scanner-cb7c28e7a38e55b0e5b6a477dfe24e4a96e09dab.tar.bz2
database: handle sqlite constraint exception specially
-rw-r--r--src/database/database.vala4
-rw-r--r--src/database/db-interface.vala3
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,
}