forked from ish-app/ish
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sqlutil.h
39 lines (34 loc) · 918 Bytes
/
sqlutil.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef FS_SQLUTIL_H
#define FS_SQLUTIL_H
#include <sqlite3.h>
// Some nice sqlite macros for anything outside of fs/fake.c
#define Q(...) #__VA_ARGS__
#define HANDLE_ERR(db) \
die("sqlite error while rebuilding: %s\n", sqlite3_errmsg(db))
#define CHECK_ERR() \
if (err != SQLITE_OK && err != SQLITE_ROW && err != SQLITE_DONE) \
HANDLE_ERR(db)
#define EXEC(sql) \
err = sqlite3_exec(db, sql, NULL, NULL, NULL); \
CHECK_ERR();
#define PREPARE(sql) ({ \
sqlite3_stmt *stmt; \
err = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); \
CHECK_ERR(); \
stmt; \
})
#define STEP(stmt) ({ \
err = sqlite3_step(stmt); \
CHECK_ERR(); \
err == SQLITE_ROW; \
})
#define RESET(stmt) \
err = sqlite3_reset(stmt); \
CHECK_ERR()
#define STEP_RESET(stmt) \
STEP(stmt); \
RESET(stmt)
#define FINALIZE(stmt) \
err = sqlite3_finalize(stmt); \
CHECK_ERR()
#endif