Compare commits
4 Commits
d454411286
...
52b70c3df1
Author | SHA1 | Date | |
---|---|---|---|
52b70c3df1 | |||
3a86a83f54 | |||
134037bfde | |||
c8a2907d6b |
31095
sqlite3/shell.c
Normal file
31095
sqlite3/shell.c
Normal file
File diff suppressed because it is too large
Load Diff
257673
sqlite3/sqlite3.c
Normal file
257673
sqlite3/sqlite3.c
Normal file
File diff suppressed because it is too large
Load Diff
13425
sqlite3/sqlite3.h
Normal file
13425
sqlite3/sqlite3.h
Normal file
File diff suppressed because it is too large
Load Diff
25
src/Makefile
Normal file
25
src/Makefile
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
.POSIX:
|
||||||
|
|
||||||
|
SRC = dodo.c sqlite3.c x_string.c
|
||||||
|
OBJ = $(SRC:.c=.o)
|
||||||
|
|
||||||
|
CONFIG_PATH = $$HOME/.config/dodo
|
||||||
|
|
||||||
|
all: dodo
|
||||||
|
|
||||||
|
$(OBJ):
|
||||||
|
|
||||||
|
dodo: $(OBJ)
|
||||||
|
$(CC) -o $@ $(OBJ)
|
||||||
|
|
||||||
|
install: dodo
|
||||||
|
mkdir -p $(CONFIG_PATH)
|
||||||
|
sqlite3 $(CONFIG_PATH)/dodo.db < dodo.schema
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm -rf $(CONFIG_PATH)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f dodo $(OBJ)
|
||||||
|
|
||||||
|
.PHONY: all clean install uninstall
|
4
src/config.h
Normal file
4
src/config.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#ifndef DB_PATH
|
||||||
|
#define DB_PATH "db.db"
|
||||||
|
#endif
|
||||||
|
|
36
src/dodo.c
Normal file
36
src/dodo.c
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "sqlite3.h"
|
||||||
|
#include "x_string.h"
|
||||||
|
|
||||||
|
#define HOME_DIR "HOME"
|
||||||
|
#define DB_DIR "/current_projects/dodo/db/"
|
||||||
|
#define FILENAME "db.db"
|
||||||
|
|
||||||
|
int initdb(sqlite3 *db, char* filename){
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
|
rc = sqlite3_open(filename, &db);
|
||||||
|
|
||||||
|
if ( rc != 0 ){
|
||||||
|
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
|
||||||
|
sqlite3_close(db);
|
||||||
|
return(rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main( int argc, char **argv ){
|
||||||
|
sqlite3 *db;
|
||||||
|
char* home_dir = getenv(HOME_DIR);
|
||||||
|
char* filename = x_strconcat(home_dir, DB_DIR);
|
||||||
|
|
||||||
|
filename = x_strconcat(filename, FILENAME);
|
||||||
|
initdb(db, filename);
|
||||||
|
|
||||||
|
puts(filename);
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
19
src/dodo.schema
Normal file
19
src/dodo.schema
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE tasks(
|
||||||
|
task_id INTEGER PRIMARY KEY,
|
||||||
|
title TEXT NOT NULL,
|
||||||
|
status TEXT NOT NULL DEFAULT 'backlog',
|
||||||
|
due_date DATE,
|
||||||
|
creation_date DATE DEFAULT (date('now'))
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE entries(
|
||||||
|
entry_id INTEGER PRIMARY KEY,
|
||||||
|
task_id INTEGER NOT NULL REFERENCES tasks(task_id),
|
||||||
|
body TEXT NOT NULL,
|
||||||
|
creation_date DATETIME DEFAULT (datetime('now', 'localtime'))
|
||||||
|
);
|
||||||
|
|
||||||
|
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');
|
||||||
|
|
||||||
|
CREATE VIEW all_info AS SELECT * FROM entries JOIN tasks ON entries.task_id = tasks.task_id;
|
257673
src/sqlite3.c
Normal file
257673
src/sqlite3.c
Normal file
File diff suppressed because it is too large
Load Diff
13425
src/sqlite3.h
Normal file
13425
src/sqlite3.h
Normal file
File diff suppressed because it is too large
Load Diff
43
src/x_string.c
Normal file
43
src/x_string.c
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int x_strlen(char* str){
|
||||||
|
char* ptr = str;
|
||||||
|
while(*ptr != '\0'){
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
return ptr - str;
|
||||||
|
}
|
||||||
|
|
||||||
|
void x_strcpy(char* dest, char* src, const int size_dest){
|
||||||
|
char* dest_ptr = dest;
|
||||||
|
char* src_ptr = src;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while(*src_ptr != '\0'){
|
||||||
|
if (i >= size_dest){
|
||||||
|
fprintf(stderr, "Error: x_strcpy\nSource string exeeds destination memory\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
*dest_ptr = *src_ptr;
|
||||||
|
dest_ptr++;
|
||||||
|
src_ptr++;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
char* x_strconcat(char* str1, char* str2){
|
||||||
|
|
||||||
|
char* new_string;
|
||||||
|
|
||||||
|
int len1 = x_strlen(str1);
|
||||||
|
int len2 = x_strlen(str2);
|
||||||
|
int new_length = len1 + len2;
|
||||||
|
|
||||||
|
new_string = malloc( sizeof(*new_string) * new_length );
|
||||||
|
x_strcpy(new_string, str1, new_length);
|
||||||
|
x_strcpy(&new_string[len1], str2, new_length - len1);
|
||||||
|
|
||||||
|
return new_string;
|
||||||
|
}
|
8
src/x_string.h
Normal file
8
src/x_string.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef X_STRING_H
|
||||||
|
#define X_STRING_H
|
||||||
|
|
||||||
|
int x_strlen(char*);
|
||||||
|
void x_strcpy(char*, char*, const int);
|
||||||
|
char* x_strconcat(char*, char*);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user