add: basic relay structure
add: improved sql calls
This commit is contained in:
parent
a38a6e63b3
commit
ac61c26d56
12 changed files with 426 additions and 77 deletions
helpers
49
helpers/create_sql_filtered_query.cc
Normal file
49
helpers/create_sql_filtered_query.cc
Normal file
|
@ -0,0 +1,49 @@
|
|||
#include <helpers.h>
|
||||
#include <drogon/drogon.h>
|
||||
#include <globals.h>
|
||||
|
||||
sqlite3_stmt*
|
||||
helpers::create_sql_filtered_query(const char *sql, sql_filter_builder **filters)
|
||||
{
|
||||
char *old_query = (char*)sql;
|
||||
char *new_query;
|
||||
|
||||
sql_filter_builder *filter;
|
||||
int filter_count = 0;
|
||||
|
||||
do
|
||||
{
|
||||
filter = filters[filter_count];
|
||||
|
||||
filter_count++;
|
||||
asprintf(&new_query, " %s %s=?%d %s", old_query, filter->col_name, filter_count, filter->logic);
|
||||
|
||||
if(old_query != sql)
|
||||
{
|
||||
free(old_query);
|
||||
}
|
||||
old_query = new_query;
|
||||
} while(filter->logic[0] != ';');
|
||||
|
||||
sqlite3_stmt *stmt;
|
||||
|
||||
sqlite3_prepare_v2(globals::db, new_query, -1, &stmt, nullptr);
|
||||
|
||||
free(new_query);
|
||||
|
||||
for(int i = 0; i < filter_count; i++)
|
||||
{
|
||||
filter = filters[i];
|
||||
|
||||
if(filter->bind_func == (intptr_t)&sqlite3_bind_int)
|
||||
{
|
||||
sqlite3_bind_int(stmt, i + 1, (int)(intptr_t)filter->value);
|
||||
}
|
||||
if(filter->bind_func == (intptr_t)&sqlite3_bind_text)
|
||||
{
|
||||
sqlite3_bind_text(stmt, i + 1, (char*)filter->value, -1, SQLITE_STATIC);
|
||||
}
|
||||
}
|
||||
|
||||
return stmt;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue