diff options
author | Sebastian Reichel <sre@ring0.de> | 2018-07-16 16:49:27 +0200 |
---|---|---|
committer | Sebastian Reichel <sre@ring0.de> | 2018-07-17 12:17:08 +0200 |
commit | a79d89ad7a6d51ba36a79a74f969c5076862e338 (patch) | |
tree | 39322afac696862b535b2d743f28b76a0f99256b | |
parent | f097216aa6edaa5e9bcc1c6a785631978cfe3953 (diff) | |
download | serial-barcode-scanner-a79d89ad7a6d51ba36a79a74f969c5076862e338.tar.bz2 |
database: add add_category(name)
-rw-r--r-- | src/database/database.vala | 18 | ||||
-rw-r--r-- | src/database/db-interface.vala | 3 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/database/database.vala b/src/database/database.vala index cd2b947..ab9c5d2 100644 --- a/src/database/database.vala +++ b/src/database/database.vala @@ -127,6 +127,7 @@ public class DataBase : Object { queries["user_disable"] = "UPDATE users SET disabled = ? WHERE id = ?"; queries["last_timestamp"] = "SELECT timestamp FROM sales ORDER BY timestamp DESC LIMIT 1"; queries["category_list"] = "SELECT id, name FROM categories"; + queries["category_add"] = "INSERT INTO categories('name') VALUES (?)"; queries["supplier_list"] = "SELECT id, name, postal_code, city, street, phone, website FROM supplier"; queries["supplier_get"] = "SELECT id, name, postal_code, city, street, phone, website FROM supplier WHERE id = ?"; queries["supplier_add"] = "INSERT INTO supplier('name', 'postal_code', 'city', 'street', 'phone', 'website') VALUES (?, ?, ?, ?, ?, ?)"; @@ -966,6 +967,23 @@ public class DataBase : Object { return result; } + public void add_category(string name) throws DBusError, IOError, DatabaseError { + /* check if category already exists */ + foreach(var c in get_category_list()) { + if(name == c.name) { + return; + } + } + + statements["category_add"].reset(); + statements["category_add"].bind_text(1, name); + int rc = statements["category_add"].step(); + + if(rc != Sqlite.DONE) { + throw new DatabaseError.INTERNAL_ERROR(_("internal error: %d"), rc); + } + } + public Supplier[] get_supplier_list() throws DBusError, IOError, DatabaseError { Supplier[] result = {}; diff --git a/src/database/db-interface.vala b/src/database/db-interface.vala index 2a6603f..63a0148 100644 --- a/src/database/db-interface.vala +++ b/src/database/db-interface.vala @@ -52,7 +52,8 @@ public interface Database : Object { public abstract bool user_exists(int user) throws DBusError, IOError, DatabaseError; public abstract bool user_equals(UserInfo u) throws DBusError, IOError, DatabaseError; public abstract int64 get_timestamp_of_last_purchase() throws DBusError, IOError; - public abstract Category[] get_category_list() throws DBusError, IOError; + public abstract Category[] get_category_list() throws DBusError, IOError, DatabaseError; + public abstract int add_category(string name) throws DBusError, IOError, DatabaseError; public abstract Supplier[] get_supplier_list() throws DBusError, IOError; public abstract Supplier get_supplier(int id) throws DBusError, IOError; public abstract void add_supplier(string name, string postal_code, string city, string street, string phone, string website) throws DBusError, IOError, DatabaseError; |