// Copyright (c) 2003,2004,2005 Juraj Kolesár #include "tdb.h" /* qs {{{ *********************************************************************/ char *tdb_qs(char *SQL_cmd, T_QS *qs) { bool first = false; if (strlen(qs->from) > 0) { strcpy(SQL_cmd, "SELECT"); if (strlen(qs->columns) > 0) strcpy(SQL_cmd, g_strdup_printf("%s %s", SQL_cmd, qs->columns)); else strcpy(SQL_cmd, g_strdup_printf("%s *", SQL_cmd)); strcpy(SQL_cmd, g_strdup_printf("%s FROM %s", SQL_cmd, (qs->from))); if (strlen(qs->filter_static) > 0) strcpy(SQL_cmd, g_strdup_printf("%s WHERE (%s)", SQL_cmd, qs->filter_static)); else first = true; if (strlen(qs->filter_dynamic) > 0) if (first) strcpy(SQL_cmd, g_strdup_printf("%s WHERE %s", SQL_cmd, qs->filter_dynamic)); else strcpy(SQL_cmd, g_strdup_printf("%s AND (%s)", SQL_cmd, qs->filter_dynamic)); if (strlen(qs->group) > 0) strcpy(SQL_cmd, g_strdup_printf("%s GROUP BY %s", SQL_cmd, qs->group)); if (strlen(qs->order) > 0) strcpy(SQL_cmd, g_strdup_printf("%s ORDER BY %s", SQL_cmd, qs->order)); } else strcpy(SQL_cmd, ""); return(SQL_cmd); } /* }}} */ /* set dynamic filter {{{ *****************************************************/ int tdb_qs_set_filter_dynamic (T_QS *qs, T_COLS *lt_columns, int column) { T_CELL *cell; int Col_cursor = 0; bool first = true; strcpy(qs->filter_dynamic, ""); while (lt_columns != NULL) { cell = lt_columns->data; if (Col_cursor != column) if (strlen(cell->value) > 0) { if (!first) strcpy(qs->filter_dynamic, g_strdup_printf("%s AND", qs->filter_dynamic)); else first = false; strcpy(qs->filter_dynamic, g_strdup_printf("%s %s LIKE '%s%%'", qs->filter_dynamic, cell->name, cell->value)); } lt_columns = g_slist_next(lt_columns); Col_cursor++; } return(__LT_OK); } /* }}} */ /* set order {{{ **************************************************************/ int tdb_qs_set_order (T_QS *qs, T_COLS *cols, int column) { T_CELL *cell; int Col_cursor = 0; while (cols != NULL) { cell = cols->data; if (Col_cursor == column) strcpy(qs->order, cell->name); cols = g_slist_next(cols); Col_cursor++; } return(__LT_OK); } /* }}} */ /* set columns {{{ ************************************************************/ int tdb_qs_set_columns (T_QS *qs, T_COLS *cols) { bool First = true; T_CELL *cell; while (cols != NULL) { cell = cols->data; if (!First) strcpy(qs->columns, g_strdup_printf("%s, ", qs->columns)); else First = false; strcpy(qs->columns, g_strdup_printf("%s%s", qs->columns, cell->name)); cols = g_slist_next(cols); } return(__LT_OK); } /* }}} */