aboutsummaryrefslogtreecommitdiffstats
path: root/src/queries.c
diff options
context:
space:
mode:
authorgramanas <anastasis.gramm2@gmail.com>2018-11-16 14:43:19 +0200
committergramanas <anastasis.gramm2@gmail.com>2018-11-16 14:43:19 +0200
commit54ae271dfc5f8405233ed320b2e9bd821ee8210f (patch)
tree9b27941b0e5cc0aa5ba805e1bcb9f8d7ff965592 /src/queries.c
parent97e14c73be6684259e235a92cc575ea39a04fc7e (diff)
downloadck-54ae271dfc5f8405233ed320b2e9bd821ee8210f.tar.gz
ck-54ae271dfc5f8405233ed320b2e9bd821ee8210f.tar.bz2
ck-54ae271dfc5f8405233ed320b2e9bd821ee8210f.zip
Code restructure/simplification, restore regression test
Diffstat (limited to 'src/queries.c')
-rw-r--r--src/queries.c227
1 files changed, 227 insertions, 0 deletions
diff --git a/src/queries.c b/src/queries.c
new file mode 100644
index 0000000..0c56cc1
--- /dev/null
+++ b/src/queries.c
@@ -0,0 +1,227 @@
+/* queries.c - Database stuff for ck -----------------------------------*- C -*-
+ *
+ * This file is part of ck, the config keeper
+ *
+ * -----------------------------------------------------------------------------
+ *
+ * Copyright (C) 2018 Anastasis Grammenos
+ * GPLv3 (see LICENCE for the full notice)
+ *
+ * -------------------------------------------------------------------------- */
+#include "queries.h"
+
+void dbh_form_query_make_tables(char *query) {
+ char tmp[STR_L] = "CREATE TABLE ";
+ strcat(tmp, TBL_PROGRAM);
+ strcat(tmp, "(");
+ strcat(tmp, COL_PROGRAM_ID);
+ strcat(tmp, " INT NOT NULL PRIMARY KEY, ");
+ strcat(tmp, COL_PROGRAM_NAME);
+ strcat(tmp, " TEXT NOT NULL); ");
+
+ strcat(tmp, "CREATE TABLE ");
+ strcat(tmp, TBL_CONFIG);
+ strcat(tmp, "(");
+ strcat(tmp, COL_CONFIG_ID);
+ strcat(tmp, " INT NOT NULL PRIMARY KEY, ");
+ strcat(tmp, COL_CONFIG_PATH);
+ strcat(tmp, " TEXT NOT NULL, ");
+ strcat(tmp, COL_CONFIG_SECRET);
+ strcat(tmp, " INT NOT NULL, ");
+ strcat(tmp, COL_CONFIG_PRIMARY);
+ strcat(tmp, " INT NOT NULL); ");
+
+ strcat(tmp, "CREATE TABLE ");
+ strcat(tmp, TBL_REL);
+ strcat(tmp, "(");
+ strcat(tmp, COL_REL_PROGRAM_ID);
+ strcat(tmp, " INT NOT NULL, ");
+ strcat(tmp, COL_REL_CONFIG_ID);
+ strcat(tmp, " INT NOT NULL);");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_insert_program(char *query) {
+ char tmp[STR_L] = "INSERT INTO ";
+ strcat(tmp, TBL_PROGRAM);
+ strcat(tmp, " VALUES(?, ?);");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_insert_config(char *query) {
+ char tmp[STR_L] = "INSERT INTO ";
+ strcat(tmp, TBL_CONFIG);
+ strcat(tmp, " VALUES(?, ?, ?, ?);");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_select_id_from(char *query, const char* tableName) {
+ char tmp[STR_M] = "SELECT ID FROM ";
+ strcat(tmp, tableName);
+ strcat(tmp, " ORDER BY ID;");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_select_all_tables(char *query) {
+ strcpy(query, "SELECT * FROM SQLITE_MASTER WHERE type='table';");
+}
+
+void dhb_form_query_insert_relationship(char *query) {
+ char tmp[STR_M] = "INSERT INTO ";
+ strcat(tmp, TBL_REL);
+ strcat(tmp, " VALUES(?, ?);");
+
+ strcpy(query, tmp);
+}
+
+void dhb_form_query_find_program(char *query) {
+ char tmp[STR_M] = "SELECT ID FROM ";
+ strcat(tmp, TBL_PROGRAM);
+ strcat(tmp, " WHERE ");
+ strcat(tmp, COL_PROGRAM_NAME);
+ strcat(tmp, " = ?;");
+
+ strcpy(query, tmp);
+}
+
+void dhb_form_query_find_config(char *query) {
+ char tmp[STR_M] = "SELECT ID FROM ";
+ strcat(tmp, TBL_CONFIG);
+ strcat(tmp, " WHERE ");
+ strcat(tmp, COL_CONFIG_PATH);
+ strcat(tmp, " = ?;");
+
+ strcpy(query, tmp);
+}
+
+void dhb_form_query_find_relationship(char *query) {
+ char tmp[STR_M] = "SELECT ";
+ strcat(tmp, COL_REL_PROGRAM_ID);
+ strcat(tmp, ", ");
+ strcat(tmp, COL_REL_CONFIG_ID);
+ strcat(tmp, " FROM ");
+ strcat(tmp, TBL_REL);
+ strcat(tmp, " WHERE ");
+ strcat(tmp, COL_REL_PROGRAM_ID);
+ strcat(tmp, " = ? AND ");
+ strcat(tmp, COL_REL_CONFIG_ID);
+ strcat(tmp, " = ?;");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_select_from_joined_eq(char *query, const char *selection, const char* condition) {
+ char tmp[STR_L] = "SELECT ";
+ strcat(tmp, selection);
+ strcat(tmp, " FROM ");
+ strcat(tmp, TBL_REL);
+ strcat(tmp, " JOIN ");
+ strcat(tmp, TBL_PROGRAM);
+ strcat(tmp, " ON ");
+ strcat(tmp, TBL_PROGRAM);
+ strcat(tmp, ".");
+ strcat(tmp, COL_PROGRAM_ID);
+ strcat(tmp, " = ");
+ strcat(tmp, COL_REL_PROGRAM_ID);
+ strcat(tmp, " JOIN ");
+ strcat(tmp, TBL_CONFIG);
+ strcat(tmp, " ON ");
+ strcat(tmp, TBL_CONFIG);
+ strcat(tmp, ".");
+ strcat(tmp, COL_CONFIG_ID);
+ strcat(tmp, " = ");
+ strcat(tmp, COL_REL_CONFIG_ID);
+ strcat(tmp, " WHERE ");
+ strcat(tmp, condition);
+ strcat(tmp, " = ?;");
+
+ strcpy(query, tmp);
+}
+
+void dbh_format_query_select_from_joined_like(char *query, const char *selection, const char* condition) {
+ char tmp[STR_L] = "SELECT ";
+ strcat(tmp, selection);
+ strcat(tmp, " FROM ");
+ strcat(tmp, TBL_REL);
+ strcat(tmp, " JOIN ");
+ strcat(tmp, TBL_PROGRAM);
+ strcat(tmp, " ON ");
+ strcat(tmp, TBL_PROGRAM);
+ strcat(tmp, ".");
+ strcat(tmp, COL_PROGRAM_ID);
+ strcat(tmp, " = ");
+ strcat(tmp, COL_REL_PROGRAM_ID);
+ strcat(tmp, " JOIN ");
+ strcat(tmp, TBL_CONFIG);
+ strcat(tmp, " ON ");
+ strcat(tmp, TBL_CONFIG);
+ strcat(tmp, ".");
+ strcat(tmp, COL_CONFIG_ID);
+ strcat(tmp, " = ");
+ strcat(tmp, COL_REL_CONFIG_ID);
+ strcat(tmp, " WHERE ");
+ strcat(tmp, condition);
+ strcat(tmp, " LIKE '%' || ? || '%';");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_select_paths_with_attributes(char *query) {
+ char tmp[STR_L] = "SELECT ";
+ strcat(tmp, COL_CONFIG_PATH);
+ strcat(tmp, ",");
+ strcat(tmp, COL_CONFIG_SECRET);
+ strcat(tmp, ",");
+ strcat(tmp, COL_CONFIG_PRIMARY);
+ strcat(tmp, " FROM ");
+ strcat(tmp, TBL_CONFIG);
+ strcat(tmp, ";");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_select_programs(char *query) {
+ char tmp[STR_L] = "SELECT ";
+ strcat(tmp, COL_PROGRAM_NAME);
+ strcat(tmp, " FROM ");
+ strcat(tmp, TBL_PROGRAM);
+ strcat(tmp, ";");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_delete_x_from_y(char *query, const char *x, const char *y) {
+ char tmp[STR_M] = "DELETE FROM ";
+ strcat(tmp, y);
+ strcat(tmp, " WHERE ");
+ strcat(tmp, x);
+ strcat(tmp, " = ?;");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_count_program_relations(char *query) {
+ char tmp[STR_M] = "SELECT COUNT(*) FROM ";
+ strcat(tmp, TBL_REL);
+ strcat(tmp, " WHERE ");
+ strcat(tmp, COL_REL_PROGRAM_ID);
+ strcat(tmp, " = ?;");
+
+ strcpy(query, tmp);
+}
+
+void dbh_form_query_get_pid_from_cid(char *query) {
+ char tmp[STR_M] = "SELECT ";
+ strcat(tmp, COL_REL_PROGRAM_ID);
+ strcat(tmp, " FROM ");
+ strcat(tmp, TBL_REL);
+ strcat(tmp, " WHERE ");
+ strcat(tmp, COL_REL_CONFIG_ID);
+ strcat(tmp, " = ?;");
+
+ strcpy(query, tmp);
+}