Added rough draft of view()

This commit is contained in:
xavi 2024-08-25 17:43:54 -07:00
parent 76e4f9f6e0
commit ffb26ebefc
2 changed files with 86 additions and 15 deletions

View File

@ -4,6 +4,15 @@
#include "x_string.h" #include "x_string.h"
#include "x_curses.h" #include "x_curses.h"
int checksqlerr(int rc, char *errmsg){
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", errmsg);
sqlite3_free(errmsg);
return 1;
}
return 0;
}
int opendb(sqlite3 **db, char* filename){ int opendb(sqlite3 **db, char* filename){
int rc = 0; int rc = 0;
@ -29,6 +38,39 @@ int callback(void *NotUsed, int argc, char **argv, char **azColName){
return 0; return 0;
} }
int get_num_rows_sql_helper(void *NotUsed, int argc, char **argv, char **azColName){
if ( !argv[0] ){
return 1;
}
printf("%s\n", argv[0]);
return 0;
}
// Get number of tasks from tasks table give status
// TODO: Gotta make the error checking not broken
int get_num_rows(sqlite3 *db, char* status, char *errmsg){
char *sql_query = "SELECT COUNT(*) FROM tasks WHERE status = ?";
sqlite3_stmt *out_stmt;
int rc = 0;
//rc = sqlite3_exec(db, sql_query, get_num_rows_sql_helper, 0, &errmsg);
//checksqlerr(rc, errmsg);
rc = sqlite3_prepare_v2(db, sql_query, -1, &out_stmt, NULL);
checksqlerr(rc, errmsg);
rc = sqlite3_bind_text(out_stmt, 1, status, -1, SQLITE_STATIC);
checksqlerr(rc, errmsg);
while ( rc = sqlite3_step(out_stmt) == SQLITE_ROW ){
return sqlite3_column_int(out_stmt, 0);
}
return 1;
}
int print_select(void *NotUsed, int argc, char **argv, char **azColName){ int print_select(void *NotUsed, int argc, char **argv, char **azColName){
int i = 0; int i = 0;
for(i=0; i<argc; i++){ for(i=0; i<argc; i++){
@ -40,15 +82,6 @@ int print_select(void *NotUsed, int argc, char **argv, char **azColName){
} }
int checksqlerr(int rc, char *errmsg){
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", errmsg);
sqlite3_free(errmsg);
return 1;
}
return 0;
}
int view_all(sqlite3 *db, char *errmsg){ int view_all(sqlite3 *db, char *errmsg){
int rc = 0; int rc = 0;
@ -59,15 +92,46 @@ int view_all(sqlite3 *db, char *errmsg){
int view(sqlite3 *db, char *errmsg){ int view(sqlite3 *db, char *errmsg){
int rc = 0; int rc = 0;
char *sql_query = "SELECT COUNT(*) FROM tasks WHERE status = 'today'"; int numrows = 0;
//sql_query = x_strconcat(sql_query, "UNION ALL "); char* status = "today";
//sql_query = x_strconcat(sql_query, "SELECT title,due_date FROM tasks WHERE status = 'backlog'"); char *sql_query = "SELECT title,due_date FROM tasks WHERE status='today'";
// Print Heading TODO: make func
printf("%s%stitle due date%s", X_BOLD, X_UNDL, X_RST);
printf(" %s%stitle due date%s", X_BOLD, X_UNDL, X_RST);
printf(" %s%stitle due date%s", X_BOLD, X_UNDL, X_RST); printf(" %s%stitle due date%s", X_BOLD, X_UNDL, X_RST);
printf("\n"); printf("\n");
// Print "today" tasks
numrows = get_num_rows(db, status, errmsg);
rc = sqlite3_exec(db, sql_query, print_select, 0, &errmsg); rc = sqlite3_exec(db, sql_query, print_select, 0, &errmsg);
checksqlerr(rc, errmsg); checksqlerr(rc, errmsg);
X_goup(numrows);
X_goright(25);
// Print "backlog" tasks
status = "backlog";
sql_query = "SELECT title,due_date FROM tasks WHERE status='backlog'";
numrows = get_num_rows(db, status, errmsg);
rc = sqlite3_exec(db, sql_query, print_select, 0, &errmsg);
checksqlerr(rc, errmsg);
X_goup(numrows);
X_goright(50);
// Print "blocked" tasks
status = "blocked";
sql_query = "SELECT title,due_date FROM tasks WHERE status='blocked'";
numrows = get_num_rows(db, status, errmsg);
rc = sqlite3_exec(db, sql_query, print_select, 0, &errmsg);
checksqlerr(rc, errmsg);
X_godown(20);
printf("%d\n", numrows);
//get_num_rows(db, errmsg);
} }
int main( int argc, char **argv ){ int main( int argc, char **argv ){
@ -79,10 +143,15 @@ int main( int argc, char **argv ){
puts(filename); puts(filename);
puts(filename);
rc = opendb(&db, filename); rc = opendb(&db, filename);
rc = view(db, errmsg); rc = view(db, errmsg);
// puts("");
// puts("");
// puts("");
// puts("");
// rc = view_all(db, errmsg);
sqlite3_close(db); sqlite3_close(db);

View File

@ -5,7 +5,9 @@
#define X_BOLD "\x1B[1m" #define X_BOLD "\x1B[1m"
#define X_UNDL "\x1B[21m" #define X_UNDL "\x1B[21m"
#define X_CYN "\x1B[36m" #define X_CYN "\x1B[36m"
#define X_goup(y) printf("\x1B[%dF", y)
#define X_godown(y) printf("\x1B[%dE", y)
#define X_goright(x) printf("\x1B[%dC", x)
#endif #endif