Added display_status_list func

This commit is contained in:
xavi 2024-09-03 20:32:33 -07:00
parent bcf1c17bf7
commit daabdcbfac

View File

@ -41,8 +41,9 @@ int callback(void *NotUsed, int argc, char **argv, char **azColName){
} }
// FOR DEBUG // FOR DEBUG
int view_all(sqlite3 *db, char *errmsg){ int view_all(sqlite3 *db){
int rc = 0; int rc = 0;
char* errmsg;
//rc = sqlite3_exec(db, "SELECT * FROM all_info;", print_select, 0, &errmsg); //rc = sqlite3_exec(db, "SELECT * FROM all_info;", print_select, 0, &errmsg);
rc = sqlite3_exec(db, "SELECT * FROM tasks;", callback, 0, &errmsg); rc = sqlite3_exec(db, "SELECT * FROM tasks;", callback, 0, &errmsg);
@ -78,22 +79,23 @@ sqlite3_stmt *print_select_test(sqlite3 *db, char* colnames, char* table, char*
snprintf(sql_query, SQLQUERY_MAX, "SELECT %s FROM %s WHERE status='%s'", colnames, table, status); snprintf(sql_query, SQLQUERY_MAX, "SELECT %s FROM %s WHERE status='%s'", colnames, table, status);
rc = sqlite3_prepare_v2(db, sql_query, -1, &out_stmt, NULL); rc = sqlite3_prepare_v2(db, sql_query, -1, &out_stmt, NULL);
checksqlerr(rc, "prepare broken");
return out_stmt; return out_stmt;
} }
// Get number of tasks from tasks table give status // Get number of tasks from tasks table give status
// TODO: Gotta make the error checking not broken // TODO: Gotta make the error checking not broken
int get_num_rows(sqlite3 *db, char* table, char* status, char *errmsg){ int get_num_rows(sqlite3 *db, char* table, char* status){
char *sql_query = "SELECT COUNT(*) FROM tasks WHERE status = ?"; char *sql_query = "SELECT COUNT(*) FROM tasks WHERE status = ?";
sqlite3_stmt *out_stmt; sqlite3_stmt *out_stmt;
int rc = 0; int rc = 0;
rc = sqlite3_prepare_v2(db, sql_query, -1, &out_stmt, NULL); rc = sqlite3_prepare_v2(db, sql_query, -1, &out_stmt, NULL);
checksqlerr(rc, errmsg); checksqlerr(rc, "prepare broken");
rc = sqlite3_bind_text(out_stmt, 1, status, -1, SQLITE_STATIC); rc = sqlite3_bind_text(out_stmt, 1, status, -1, SQLITE_STATIC);
checksqlerr(rc, errmsg); checksqlerr(rc, "bind broken");
while ( rc = sqlite3_step(out_stmt) == SQLITE_ROW ){ while ( rc = sqlite3_step(out_stmt) == SQLITE_ROW ){
return sqlite3_column_int(out_stmt, 0); return sqlite3_column_int(out_stmt, 0);
@ -102,131 +104,82 @@ int get_num_rows(sqlite3 *db, char* table, char* status, char *errmsg){
return 1; return 1;
} }
// TODO error checking needs done // Print columns
int print_fixed_width(const unsigned char* str){ int print_fixed_width(const unsigned char* str){
if (str){ if (str){
printf("%-19.19s", str); printf("%-19.19s", str);
}else{ }else{
printf("%-19.19s",""); printf("%-19.19s","");
} }
}
void display_status_list(int start_col, sqlite3 *db, char* colnames, char* table, char* status){
int rc = 0;
int i = 0;
int numrows = 0;
int num_cols = 0;
char* errmsg;
const unsigned char* col_val;
sqlite3_stmt* out_stmt;
X_goright(start_col);
numrows = get_num_rows(db, table, status);
out_stmt = print_select_test(db, colnames, table, status);
while ( rc = sqlite3_step(out_stmt) == SQLITE_ROW ){
num_cols = sqlite3_column_count(out_stmt);
for (i = 0; i < num_cols; i++){
col_val = sqlite3_column_text(out_stmt, i);
print_fixed_width(col_val);
}
printf("\n");
X_goright(start_col);
}
X_goup(numrows);
} }
// Print kanban table // Print kanban table
// All lists with task name and due date // All lists with task name and due date
// TODO just gotta use snprintf because can't bind column or table names // TODO just gotta use snprintf because can't bind column or table names
int view(sqlite3 *db, char *errmsg){ int view(sqlite3 *db){
int rc = 0;
int i = 0;
int num_cols = 0;
const unsigned char* col_val;
sqlite3_stmt* out_stmt;
int numrows = -1;
int* currcol = malloc(sizeof(int));
//char sql_query[SQLQUERY_MAX];
char* table = "tasks"; char* table = "tasks";
char* status = "today"; char* status = "today";
char* colnames = "title,due_date"; char* colnames = "title,creation_date";
//char *sql_query = "SELECT title,due_date ? tasks WHERE status='?'";
// Print Heading // Print Heading
view_heading(); view_heading();
// Print "today" tasks // Print "today" tasks
X_goup(numrows); display_status_list(-1, db, colnames, table, status);
X_goright(-1);
numrows = get_num_rows(db, table, status, errmsg);
out_stmt = print_select_test(db, colnames, table, status);
while ( rc = sqlite3_step(out_stmt) == SQLITE_ROW ){
num_cols = sqlite3_column_count(out_stmt);
for (i = 0; i < num_cols; i++){
col_val = sqlite3_column_text(out_stmt, i);
print_fixed_width(col_val);
}
printf("\n");
}
X_goup(numrows);
X_goright(33);
// Print "backlog" tasks
status = "backlog"; status = "backlog";
numrows = get_num_rows(db, table, status, errmsg); display_status_list(33, db, colnames, table, status);
out_stmt = print_select_test(db, colnames, table, status);
while ( rc = sqlite3_step(out_stmt) == SQLITE_ROW ){
num_cols = sqlite3_column_count(out_stmt);
for (i = 0; i < num_cols; i++){
col_val = sqlite3_column_text(out_stmt, i);
print_fixed_width(col_val);
}
printf("\n");
X_goright(33);
}
X_goup(numrows);
X_goright(66);
status = "blocked";
numrows = get_num_rows(db, table, status, errmsg);
out_stmt = print_select_test(db, colnames, table, status);
while ( rc = sqlite3_step(out_stmt) == SQLITE_ROW ){
num_cols = sqlite3_column_count(out_stmt);
for (i = 0; i < num_cols; i++){
col_val = sqlite3_column_text(out_stmt, i);
print_fixed_width(col_val);
}
printf("\n");
X_goright(66);
}
//*currcol = -1;
//numrows = get_num_rows(db, table, status, errmsg);
//rc = sqlite3_exec(db, sql_query, print_select, (void *)currcol, &errmsg);
//checksqlerr(rc, errmsg);
//X_goup(numrows);
//// Print "backlog" tasks
//*currcol = 25;
//status = "backlog";
//sql_query = "SELECT title,due_date FROM tasks WHERE status='backlog'";
//numrows = get_num_rows(db, table, status, errmsg);
//rc = sqlite3_exec(db, sql_query, print_select, (void *)currcol, &errmsg);
//checksqlerr(rc, errmsg);
//X_goup(numrows);
//X_goright(50);
// Print "blocked" tasks // Print "blocked" tasks
//status = "blocked"; status = "blocked";
//sql_query = "SELECT title,due_date FROM tasks WHERE status='blocked'"; display_status_list(66, db, colnames, table, status);
//numrows = get_num_rows(db, table, status, errmsg);
//rc = sqlite3_exec(db, sql_query, print_select, 0, &errmsg);
//checksqlerr(rc, errmsg);
//X_godown(2);
//printf("%d\n", numrows);
//get_num_rows(db, errmsg);
} }
int main( int argc, char **argv ){ int main( int argc, char **argv ){
sqlite3 *db; sqlite3 *db;
int rc = 0; int rc = 0;
char *errmsg;
char* home_dir = getenv("HOME"); char* home_dir = getenv("HOME");
char* filename = x_strconcat(home_dir, DB_PATH); char* filename = x_strconcat(home_dir, DB_PATH);
puts(filename); //puts(filename);
puts(filename); //puts(filename);
rc = opendb(&db, filename); rc = opendb(&db, filename);
rc = view(db, errmsg); rc = view(db);
puts(""); puts("");
puts(""); puts("");
puts(""); puts("");
puts(""); puts("");
rc = view_all(db, errmsg); rc = view_all(db);
sqlite3_close(db); sqlite3_close(db);