diff options
author | Trumeet <yuuta@yuuta.moe> | 2023-03-19 15:00:05 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2023-03-19 15:00:05 -0700 |
commit | 9f86b3bbe7d5d892620f1973ca069da67e90b568 (patch) | |
tree | f6c30c33785e8d6e28b9c1d1eee2780bd5a8df0f | |
parent | e1a3e886bf36da6fc49b52ed5f24e8b193dadc4d (diff) | |
download | ksyxbot-9f86b3bbe7d5d892620f1973ca069da67e90b568.tar ksyxbot-9f86b3bbe7d5d892620f1973ca069da67e90b568.tar.gz ksyxbot-9f86b3bbe7d5d892620f1973ca069da67e90b568.tar.bz2 ksyxbot-9f86b3bbe7d5d892620f1973ca069da67e90b568.zip |
Share stmt_global_stat
-rw-r--r-- | db.c | 11 | ||||
-rw-r--r-- | db.h | 2 | ||||
-rw-r--r-- | stat.c | 18 |
3 files changed, 21 insertions, 10 deletions
@@ -28,6 +28,8 @@ static const char *sql_upgrades[] = { sqlite3 *db = NULL; +sqlite3_stmt *stmt_global_stat = NULL; + void db_init(void) { int r; r = sqlite3_open(cmd.db_path, &db); @@ -68,11 +70,20 @@ void db_init(void) { goto sql_err; } } + + /* Prepare statements */ + if ((r = sqlite3_prepare_v2(db, "SELECT * FROM stats_global;", -1, &stmt_global_stat, NULL))) { + goto sql_err; + } } void db_close(void) { if (db == NULL) return; + if (stmt_global_stat) { + sqlite3_finalize(stmt_global_stat); + stmt_global_stat = NULL; + } sqlite3_close(db); db = NULL; } @@ -13,6 +13,8 @@ #define ULEN(X) (X == 0 ? 1 : (int)floor(log10(X)) + 1) #define LLEN(X) ((int)floor(log10(llabs(X))) + 1 + ((X < 0) ? 1 : 0)) +extern sqlite3_stmt *stmt_global_stat; + extern sqlite3 *db; void db_init(void); @@ -19,18 +19,16 @@ static char *praises[] = { void stat(struct TdMessage *msg) { int r; char m[1024]; - sqlite3_stmt *stmt = NULL; - if ((r = sqlite3_prepare_v2(db, "SELECT * FROM stats_global;", -1, &stmt, NULL))) { + if ((r = sqlite3_step(stmt_global_stat)) != SQLITE_ROW) { goto sql_err; sql_err: { snprintf(m, 1024, "Cannot query statistics: %s.", sqlite3_errstr(r)); LOGEV("%s", m); - if (stmt) sqlite3_finalize(stmt); + sqlite3_reset(stmt_global_stat); goto send; } } - if ((r = sqlite3_step(stmt)) != SQLITE_ROW) goto sql_err; snprintf(m, sizeof(m), "%s" "TGCN 共有 %d 位 K 教授的虔诚学生卖了 %d 句菜," @@ -40,13 +38,13 @@ void stat(struct TdMessage *msg) { "共有 %d 句教授语录。\n" "Bot 已运行 %ld 秒。", praises[rand() % (sizeof(praises) / sizeof(char *))], - sqlite3_column_int(stmt, 0), - sqlite3_column_int(stmt, 1), - sqlite3_column_int(stmt, 2), - sqlite3_column_int(stmt, 3), - sqlite3_column_int(stmt, 4), + sqlite3_column_int(stmt_global_stat, 0), + sqlite3_column_int(stmt_global_stat, 1), + sqlite3_column_int(stmt_global_stat, 2), + sqlite3_column_int(stmt_global_stat, 3), + sqlite3_column_int(stmt_global_stat, 4), time(NULL) - start_time); - sqlite3_finalize(stmt); + sqlite3_reset(stmt_global_stat); goto send; send: td_send(TdCreateObjectSendMessage(msg->chat_id_, |