aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c45
1 files changed, 32 insertions, 13 deletions
diff --git a/src/data.c b/src/data.c
index ac1318c..bb5bec8 100644
--- a/src/data.c
+++ b/src/data.c
@@ -11,9 +11,37 @@
static gboolean data_check_and_create_database(gchar *data_file);
static gint data_create_new_database(const gchar *filename);
static Manga *data_get_manga_from_statement(sqlite3_stmt *stmt);
+static GList *data_get_manga_for_query(const gchar *query);
GList *data_get_manga(void)
{
+ const char *sql =
+ " SELECT id, "
+ " name, "
+ " current_qty, "
+ " total_qty "
+ " FROM manga "
+ " ORDER BY name "
+ " COLLATE NOCASE ";
+ return data_get_manga_for_query(sql);
+}
+
+GList *data_get_incomplete_manga(void)
+{
+ const char *sql =
+ " SELECT id, "
+ " name, "
+ " current_qty, "
+ " total_qty "
+ " FROM manga "
+ " WHERE current_qty != total_qty "
+ " ORDER BY name "
+ " COLLATE NOCASE ";
+ return data_get_manga_for_query(sql);
+}
+
+GList *data_get_manga_for_query(const gchar *query)
+{
sqlite3 *database;
sqlite3_stmt *statement;
gchar *data_file;
@@ -23,20 +51,11 @@ GList *data_get_manga(void)
if (data_check_and_create_database(data_file)) {
if (sqlite3_open(data_file, &database) == SQLITE_OK) {
- int res;
- const char *sql =
- " SELECT id, "
- " name, "
- " current_qty, "
- " total_qty "
- " FROM manga "
- " ORDER BY name "
- " COLLATE NOCASE ";
+ int res = sqlite3_prepare_v2(database,
+ query,
+ strlen(query),
+ &statement, NULL);
- res = sqlite3_prepare_v2(database,
- sql,
- strlen(sql),
- &statement, NULL);
if (res == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
Manga *manga = data_get_manga_from_statement(statement);