Added some sql helper functions and x_curses for escape console commands

This commit is contained in:
xavi 2024-08-22 22:23:18 -07:00
parent b7e0c9cdf3
commit 76e4f9f6e0
5 changed files with 79 additions and 11 deletions

View File

@ -14,7 +14,7 @@ all: dodo
$(OBJ):
dodo.o: dodo.c
$(CC) -c -o dodo.o $(DFLAGS) dodo.c
$(CC) -c -o dodo.o -ggdb $(DFLAGS) dodo.c
dodo: $(OBJ)
$(CC) -o $@ $(OBJ)

View File

@ -1,4 +0,0 @@
#ifndef DB_PATH
#define DB_PATH "db.db"
#endif

View File

@ -2,30 +2,88 @@
#include <stdlib.h>
#include "sqlite3.h"
#include "x_string.h"
#include "x_curses.h"
#define HOME_DIR "HOME"
int initdb(sqlite3 *db, char* filename){
int opendb(sqlite3 **db, char* filename){
int rc = 0;
rc = sqlite3_open(filename, &db);
rc = sqlite3_open(filename, db);
if ( rc != 0 ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(*db));
sqlite3_close(*db);
return(rc);
}
return(rc);
}
// FOR DEBUG
int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int print_select(void *NotUsed, int argc, char **argv, char **azColName){
int i = 0;
for(i=0; i<argc; i++){
printf("%s ", argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
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 rc = 0;
rc = sqlite3_exec(db, "SELECT * FROM all_info;", print_select, 0, &errmsg);
checksqlerr(rc, errmsg);
return rc;
}
int view(sqlite3 *db, char *errmsg){
int rc = 0;
char *sql_query = "SELECT COUNT(*) FROM tasks WHERE status = 'today'";
//sql_query = x_strconcat(sql_query, "UNION ALL ");
//sql_query = x_strconcat(sql_query, "SELECT title,due_date FROM tasks WHERE status = 'backlog'");
printf("%s%stitle due date%s", X_BOLD, X_UNDL, X_RST);
printf("\n");
rc = sqlite3_exec(db, sql_query, print_select, 0, &errmsg);
checksqlerr(rc, errmsg);
}
int main( int argc, char **argv ){
sqlite3 *db;
char* home_dir = getenv(HOME_DIR);
int rc = 0;
char *errmsg;
char* home_dir = getenv("HOME");
char* filename = x_strconcat(home_dir, DB_PATH);
puts(filename);
rc = opendb(&db, filename);
rc = view(db, errmsg);
sqlite3_close(db);
return 0;

View File

@ -1,6 +1,7 @@
CREATE TABLE tasks(
task_id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
active_id INTEGER UNIQUE,
status TEXT NOT NULL DEFAULT 'backlog',
due_date DATE,
creation_date DATE DEFAULT (date('now'))
@ -16,4 +17,6 @@ CREATE TABLE entries(
INSERT INTO tasks (title) VALUES ('test1'), ('test2'), ('test3');
INSERT INTO entries (task_id, body) VALUES (1, 'this is an entry for test1'), (2, 'this is an entry for test2'), (3, 'this is an entry for test3');
UPDATE tasks SET status = 'today' WHERE title = 'test2';
CREATE VIEW all_info AS SELECT * FROM entries JOIN tasks ON entries.task_id = tasks.task_id;

11
src/x_curses.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef X_MACURS_H
#define X_MACURS_H
#define X_RST "\x1B[0m"
#define X_BOLD "\x1B[1m"
#define X_UNDL "\x1B[21m"
#define X_CYN "\x1B[36m"
#endif