#include "database.h" #include #include #include void database_state_init(struct database_state* s, const char* db_path) { int return_code; return_code = sqlite3_open_v2(db_path, &s->vm, SQLITE_OPEN_READWRITE, NULL); assert(return_code == SQLITE_OK); } void database_state_free(struct database_state* s) { sqlite3_close_v2(s->vm); } void database_write_active(struct database_state* s, int collar_id, int active_status) { const char query[] = "UPDATE collar SET active=? WHERE id=?"; int return_code; sqlite3_stmt* stmt; return_code = sqlite3_prepare_v2(s->vm, query, sizeof(query), &stmt, NULL); assert(return_code == SQLITE_OK); return_code = sqlite3_bind_int(stmt, 1, active_status); assert(return_code == SQLITE_OK); return_code = sqlite3_bind_int(stmt, 2, collar_id); assert(return_code == SQLITE_OK); do { return_code = sqlite3_step(stmt); } while(return_code == SQLITE_ROW); assert(return_code == SQLITE_DONE); } void database_write_location(struct database_state* s, int collar_id, double x, double y) { const char query[] = "INSERT INTO data_point(collar_id, longitude, latitude, datetime)" "VALUES (?, ?, ?, datetime('now'))"; int return_code; sqlite3_stmt* stmt; return_code = sqlite3_prepare_v2(s->vm, query, sizeof(query), &stmt, NULL); assert(return_code == SQLITE_OK); return_code = sqlite3_bind_int(stmt, 1, collar_id); assert(return_code == SQLITE_OK); return_code = sqlite3_bind_double(stmt, 2, x); assert(return_code == SQLITE_OK); return_code = sqlite3_bind_double(stmt, 3, y); assert(return_code == SQLITE_OK); do { return_code = sqlite3_step(stmt); } while(return_code == SQLITE_ROW); assert(return_code == SQLITE_DONE); }