From 8e9abb6e5627275fae3918e6567ac696a0bb07d1 Mon Sep 17 00:00:00 2001 From: marcelb Date: Thu, 27 Jul 2023 23:04:24 +0200 Subject: [PATCH] Merge with thread --- example/example copy.db | Bin 20480 -> 0 bytes example/example.db | Bin 24576 -> 24576 bytes lib/sql3.hpp | 5 ++--- src/sql3.cpp | 35 +++++++++++------------------------ test/test.cpp | 22 ++++++++++++++-------- 5 files changed, 27 insertions(+), 35 deletions(-) delete mode 100644 example/example copy.db diff --git a/example/example copy.db b/example/example copy.db deleted file mode 100644 index 15a87b05ad58b0fb42439ca39994b780a656c7d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI)Pixa)9KiACNz&OAW&{aE@bDOrwR8-sM=y&SBreUinxZ|GbVeAa9osV4RbPx} z--ah|djTGO0ph`f&l5MC71>qR?*qT5&!0RYzYo1UeL`RCCi_*P-W(jw@=84vw}g~p zQz;=tQ%6I`MX`0mx#;Lmd8z%cW>ajue7@>^7tYO(!n3^3-Ur>FAbdouqxHvp1=6j3X#*<+bW|7Lm$4R6XuIEP56VRl1$2bd)4&l*YTGXkAaI z;UEg!EPAD9&S%Z=AdHiR;opmPhVdXAj@4E)?wI?laFlJwseXb%lxE#lcgeG0!%6U}|U0y7Iz0JF}NJ`+Kpf!}2}}?~AS|2q1s}0tg_000Iag zfB*srAn<<+v@J*Yy{)_|-s;$#>K{hR;&fwH-j$BH(;wtVdqp{`>*=N0md?uZz6tM# zt|$l~fB*srAb&r009ILKmY** z5I_I{1Q1vPf!lUZF1!X{`F7v^`~2U$|1Zt?Kd1jo@Vy{K1Q0*~0R#|0009ILKmdW| N5@<@>m-W9K`~(S!l^Xy6 diff --git a/example/example.db b/example/example.db index bf694481d037f6defd6bf5d48daa2c83bf77a06f..a502dc346de6aeca06008ca80831c8125867a812 100644 GIT binary patch delta 49 zcmZoTz}Rqrae_1>_e2?IM(&LX%ltW3GVnj*Kf%9pGo!$4er{Q27DiE1X5Yl3)X7`o FeE@y44$lAp delta 51 zcmZoTz}Rqrae_1>*F+g-My`zs%ltW(Gw?s+Kf%9zGo!#veqMQI7Dh=^=77ZP{G!Ck HTjG5Ho4*gJ diff --git a/lib/sql3.hpp b/lib/sql3.hpp index 37762d4..738dc34 100644 --- a/lib/sql3.hpp +++ b/lib/sql3.hpp @@ -10,6 +10,7 @@ #include // #include #include +#include using namespace std; @@ -24,15 +25,13 @@ class sql3 { bool keepOpen; string Answer; map> parsed; + mutex io; sql3(const string path, bool _keepOpen = false); bool open(); bool close(); - bool run(const string sql_command); - string answer(); void mapit(); - string ask(const string sql_command); map> query(const string sql_command); ~sql3(); diff --git a/src/sql3.cpp b/src/sql3.cpp index 7e29b20..71089d5 100644 --- a/src/sql3.cpp +++ b/src/sql3.cpp @@ -23,10 +23,11 @@ bool sql3::close() { return operationStatus != SQLITE_OK; } -bool sql3::run(const string sql_command) { - +map> sql3::query(const string sql_command) { + io.lock(); if (!keepOpen) { if (open()) { + io.unlock(); throw string("[ERROR] Unable to open database "); } } @@ -37,7 +38,6 @@ bool sql3::run(const string sql_command) { exec_stuts = sqlite3_exec(db, sql_command.c_str(), callback, NULL, &messaggeError); if (exec_stuts != SQLITE_OK) { - // printf("[ERROR] Ne mogu Ĩitati bazu podataka!"); sqlite3_free(messaggeError); r = false; } @@ -47,40 +47,27 @@ bool sql3::run(const string sql_command) { if (!keepOpen) { if(close()) { + io.unlock(); throw string("[ERROR] Unable to close database "); } } - return r; -} + map> _parsed; -string sql3::answer() { - string _Answer = Answer; - Answer.clear(); - return _Answer; -} + cout << Answer << endl; -string sql3::ask(const string sql_command) { - if (!run(sql_command)) { + if (!r) { + io.unlock(); throw string("[ERROR] Unable to read database "); - //return {}; - } - else { - return answer(); } -} -map> sql3::query(const string sql_command) { - if (!run(sql_command)) { - throw string("[ERROR] Unable to read database "); - //return {}; - } else { mapit(); - map> _parsed = parsed; + _parsed = parsed; parsed.clear(); - return _parsed; } + io.unlock(); + return _parsed; } void sql3::mapit() { diff --git a/test/test.cpp b/test/test.cpp index 85c864a..b97e378 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -5,21 +5,27 @@ using namespace std; int main() { + try { - sql3 mydb("../example/example.db", false); + sql3 mydb("../example/example_copy.db", false); // cout << mydb.ask("Select * from Tab1"); // cout << mydb.ask("INSERT INTO Tab1 VALUES(3,'Pakora', 'marijanab@bitelex.ml');"); - // auto res = mydb.query("Select * from Tab1"); - auto res = mydb.query("INSERT INTO Tab1 VALUES(4,'Mare', 'marijanab@bitelex.co');"); + auto res = mydb.query("Select * from Tab1"); + // cout << endl << res["NAME"][1]; - // for (auto i : res) - // for (auto j: i.second) - // cout << i.first << " : " << j << endl; - + // cout << endl << res["MAIL"][1]; - // cout << endl << res["NAME"][1]; + for (auto i : res) { + for (auto j: i.second) { + cout << i.first << " : " << j << endl; + } + } + + } catch (const string err) { + cout << err << endl; + } return 0; } \ No newline at end of file