7
7
#include "../core/Task.hpp"
8
8
#include "../core/Category.hpp"
11
13
class LocalDriver : public MagnasTareasDriver {
14
17
std::cout << "Local driver. Using SQlite: " << SQLITE_VERSION << std::endl;
18
std::string tableSentence="CREATE TABLE IF NOT EXISTS MagnasTareas(TITLE TEXT, UUID TEXT UNIQUE, DESCRIPTION TEXT, CATEGORY TEXT, CATEGORY_UUID TEXT, FINISHED INTEGER);";
20
std::string path=std::getenv("APPDATA");
22
std::string path=std::getenv("HOME");
24
path+="/.MagnasTareas";
26
result=sqlite3_open(path.c_str(),&db);
27
if(result!=SQLITE_OK){
28
std::cerr << "Error while opening the database" << std::endl;
31
result=sqlite3_exec(db,tableSentence.c_str(),0,0,0);
32
if(result!=SQLITE_OK){
33
std::cerr << "Error while creating the database table" << std::endl;
18
44
return true; // Always true because local storage always works
20
46
std::vector<Category> GetCategories(){
21
//Hacerlo bien en SQlite 3
23
cat1.name="Categoria 1";
24
//cat1.driverName=LOCAL;
28
cat2.name="Categoria 2";
29
//cat2.driverName=LOCAL;
33
cat3.name="Categoria TONTA";
41
task1.name="MagnasTareas 001";
42
task1.description="Cargar tareas desde las categorias";
43
task1.completed=false;
45
cat4.tasks.push_back(task1);
47
std::vector<Category> vector;
48
vector.push_back(cat1);
49
vector.push_back(cat2);
50
vector.push_back(cat3);
51
vector.push_back(cat4);
47
std::vector<Category> categories;
49
std::string sentence="SELECT DISTINCT CATEGORY_UUID,CATEGORY FROM MagnasTareas;";
52
if(sqlite3_prepare(db,sentence.c_str(),std::strlen(sentence.c_str()),&next,0)==SQLITE_OK){
53
while(sqlite3_step(next)==SQLITE_ROW){
55
const char* category=reinterpret_cast<const char*>(sqlite3_column_text(next,1));
57
const char* uuid=reinterpret_cast<const char*>(sqlite3_column_text(next,0));
60
std::string sent="SELECT TITLE, UUID, DESCRIPTION, FINISHED FROM MagnasTareas WHERE CATEGORY_UUID='"+cat.uuid+"';";
62
if(sqlite3_prepare(db,sent.c_str(),std::strlen(sent.c_str()),&next2,0)==SQLITE_OK){
63
while(sqlite3_step(next2)==SQLITE_ROW){
65
task.name=reinterpret_cast<const char*>(sqlite3_column_text(next2,0));
66
task.uuid=reinterpret_cast<const char*>(sqlite3_column_text(next2,1));
67
task.description=reinterpret_cast<const char*>(sqlite3_column_text(next2,2));
68
task.completed=(bool)sqlite3_column_int(next2,3);
69
cat.tasks.push_back(task);
72
categories.push_back(cat);
b'\\ No newline at end of file'