From a79d89ad7a6d51ba36a79a74f969c5076862e338 Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Mon, 16 Jul 2018 16:49:27 +0200 Subject: database: add add_category(name) --- src/database/database.vala | 18 ++++++++++++++++++ src/database/db-interface.vala | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src') 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; -- cgit v1.2.3