Added some sql helper functions and x_curses for escape console commands
This commit is contained in:
parent
b7e0c9cdf3
commit
76e4f9f6e0
@ -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)
|
||||
|
@ -1,4 +0,0 @@
|
||||
#ifndef DB_PATH
|
||||
#define DB_PATH "db.db"
|
||||
#endif
|
||||
|
70
src/dodo.c
70
src/dodo.c
@ -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;
|
||||
|
@ -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
11
src/x_curses.h
Normal 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
|
||||
|
Loading…
Reference in New Issue
Block a user