annotate deita/d_sqlite.c @ 279:b3b547563ec7

Add Google connector service and agent wiki Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code. Co-authored-by: Copilot <[email protected]> Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:22:36 -0700
parents 1f9877b637e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
75
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 #include "deita_internal.h"
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2 #include <stdio.h>
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3 #include <stdlib.h>
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
4 #include <string.h>
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
5
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
6 Deita_Connection* deita__sqlite_connection_create(const char *connection_string)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
7 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
8 Deita_Connection *p_connection = (Deita_Connection*)malloc(sizeof(Deita_Connection));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
9 if (!p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
10 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
11 fprintf(stderr, "deita__sqlite_connection_create: Failed to allocate connection\n");
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
12 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
13 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
14
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
15 p_connection->database_type = DEITA_DATABASE_TYPE_SQLITE3;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
16 p_connection->native_handle = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
17 p_connection->is_open = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
18
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
19 sqlite3 *p_db = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
20 int32 result = sqlite3_open(connection_string, &p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
21
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
22 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
23 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
24 fprintf(stderr, "deita__sqlite_connection_create: Failed to open database: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
25 sqlite3_close(p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
26 free(p_connection);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
27 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
28 }
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
29 result = sqlite3_busy_timeout(p_db, 5000);
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
30 if (result != SQLITE_OK)
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
31 {
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
32 fprintf(
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
33 stderr,
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
34 "deita__sqlite_connection_create: Failed to set busy timeout: %s\n",
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
35 sqlite3_errmsg(p_db));
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
36 sqlite3_close(p_db);
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
37 free(p_connection);
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
38 return NULL;
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
39 }
75
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
40
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
41 p_connection->native_handle = p_db;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
42 p_connection->is_open = TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
43
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
44 return p_connection;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
45 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
46
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
47 void deita__sqlite_connection_close(Deita_Connection *p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
48 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49 if (!p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50 return;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
51
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
52 if (p_connection->native_handle)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
53 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
54 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
55 sqlite3_close(p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
56 p_connection->native_handle = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
57 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
58
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
59 p_connection->is_open = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
60 free(p_connection);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
61 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
62
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
63 boolean deita__sqlite_connection_is_open(Deita_Connection *p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
64 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
65 if (!p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
66 return FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
67
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
68 return p_connection->is_open;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
69 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
70
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
71 Deita_Result_Set* deita__sqlite_query_execute(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
72 Deita_Connection *p_connection,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
73 const char *query,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
74 Dowa_Arena *p_arena)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
75 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
76 if (!p_connection || !p_connection->native_handle || !query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
77 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
78
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
79 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
80 sqlite3_stmt *p_stmt = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
81
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
82 int32 result = sqlite3_prepare_v2(p_db, query, -1, &p_stmt, NULL);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
83 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
84 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
85 fprintf(stderr, "deita__sqlite_query_execute: Failed to prepare statement: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
86 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
87 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
88
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
89 Deita_Result_Set *p_result_set = (Deita_Result_Set*)Dowa_Arena_Allocate(p_arena, sizeof(Deita_Result_Set));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
90 if (!p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
91 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
92 fprintf(stderr, "deita__sqlite_query_execute: Failed to allocate result set\n");
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
93 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
94 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
95 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
96
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
97 p_result_set->database_type = DEITA_DATABASE_TYPE_SQLITE3;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
98 p_result_set->native_result = p_stmt;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
99 p_result_set->column_count = sqlite3_column_count(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
100 p_result_set->has_data = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
101 p_result_set->is_done = FALSE;
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
102 p_result_set->has_error = FALSE;
75
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
103
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
104 return p_result_set;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
105 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
106
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
107 Deita_Result_Set* deita__sqlite_query_execute_prepared(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
108 Deita_Connection *p_connection,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
109 const char *query,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
110 int32 parameter_count,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
111 const char **parameter_values,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
112 Dowa_Arena *p_arena)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
113 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
114 if (!p_connection || !p_connection->native_handle || !query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
115 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
116
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
117 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
118 sqlite3_stmt *p_stmt = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
119
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
120 int32 result = sqlite3_prepare_v2(p_db, query, -1, &p_stmt, NULL);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
121 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
122 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
123 fprintf(stderr, "deita__sqlite_query_execute_prepared: Failed to prepare statement: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
124 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
125 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
126
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
127 for (int32 i = 0; i < parameter_count; i++)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
128 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
129 result = sqlite3_bind_text(p_stmt, i + 1, parameter_values[i], -1, SQLITE_TRANSIENT);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
130 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
131 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
132 fprintf(stderr, "deita__sqlite_query_execute_prepared: Failed to bind parameter %d: %s\n", i, sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
133 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
134 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
135 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
136 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
137
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
138 Deita_Result_Set *p_result_set = (Deita_Result_Set*)Dowa_Arena_Allocate(p_arena, sizeof(Deita_Result_Set));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
139 if (!p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
140 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
141 fprintf(stderr, "deita__sqlite_query_execute_prepared: Failed to allocate result set\n");
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
142 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
143 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
144 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
145
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
146 p_result_set->database_type = DEITA_DATABASE_TYPE_SQLITE3;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
147 p_result_set->native_result = p_stmt;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
148 p_result_set->column_count = sqlite3_column_count(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
149 p_result_set->has_data = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
150 p_result_set->is_done = FALSE;
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
151 p_result_set->has_error = FALSE;
75
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
152
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
153 return p_result_set;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
154 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
155
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
156 int32 deita__sqlite_query_execute_update(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
157 Deita_Connection *p_connection,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
158 const char *query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
159 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
160 if (!p_connection || !p_connection->native_handle || !query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
161 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
162
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
163 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
164 char *error_message = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
165
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
166 int32 result = sqlite3_exec(p_db, query, NULL, NULL, &error_message);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
167 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
168 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
169 fprintf(stderr, "deita__sqlite_query_execute_update: Failed to execute: %s\n", error_message);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
170 sqlite3_free(error_message);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
171 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
172 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
173
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
174 return sqlite3_changes(p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
175 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
176
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
177 int32 deita__sqlite_query_execute_update_prepared(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
178 Deita_Connection *p_connection,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
179 const char *query,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
180 int32 parameter_count,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
181 const char **parameter_values)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
182 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
183 if (!p_connection || !p_connection->native_handle || !query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
184 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
185
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
186 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
187 sqlite3_stmt *p_stmt = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
188
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
189 int32 result = sqlite3_prepare_v2(p_db, query, -1, &p_stmt, NULL);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
190 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
191 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
192 fprintf(stderr, "deita__sqlite_query_execute_update_prepared: Failed to prepare statement: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
193 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
194 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
195
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
196 for (int32 i = 0; i < parameter_count; i++)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
197 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
198 result = sqlite3_bind_text(p_stmt, i + 1, parameter_values[i], -1, SQLITE_TRANSIENT);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
199 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
200 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
201 fprintf(stderr, "deita__sqlite_query_execute_update_prepared: Failed to bind parameter %d: %s\n", i, sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
202 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
203 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
204 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
205 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
206
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
207 result = sqlite3_step(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
208 if (result != SQLITE_DONE)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
209 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
210 fprintf(stderr, "deita__sqlite_query_execute_update_prepared: Failed to execute: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
211 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
212 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
213 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
214
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
215 int32 changes = sqlite3_changes(p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
216 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
217
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
218 return changes;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
219 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
220
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
221 boolean deita__sqlite_result_set_next(Deita_Result_Set *p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
222 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
223 if (!p_result_set || !p_result_set->native_result || p_result_set->is_done)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
224 return FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
225
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
226 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
227 int32 result = sqlite3_step(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
228
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
229 if (result == SQLITE_ROW)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
230 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
231 p_result_set->has_data = TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
232 return TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
233 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
234 else if (result == SQLITE_DONE)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
235 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
236 p_result_set->has_data = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
237 p_result_set->is_done = TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
238 return FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
239 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
240 else
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
241 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
242 fprintf(stderr, "deita__sqlite_result_set_next: Error stepping through results\n");
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
243 p_result_set->has_data = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
244 p_result_set->is_done = TRUE;
260
1f9877b637e9 Add Copilot-powered cyberpunk JRPG chat
MrJuneJune <mrjunejune@users.noreply.github.com>
parents: 75
diff changeset
245 p_result_set->has_error = TRUE;
75
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
246 return FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
247 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
248 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
249
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
250 int32 deita__sqlite_result_set_get_column_count(Deita_Result_Set *p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
251 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
252 if (!p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
253 return 0;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
254
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
255 return p_result_set->column_count;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
256 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
257
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
258 const char* deita__sqlite_result_set_get_column_name(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
259 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
260 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
261 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
262 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
263 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
264
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
265 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
266 return sqlite3_column_name(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
267 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
268
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
269 Deita_Column_Type deita__sqlite_result_set_get_column_type(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
270 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
271 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
272 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
273 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
274 return DEITA_COLUMN_TYPE_NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
275
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
276 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
277 int32 sqlite_type = sqlite3_column_type(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
278
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
279 switch (sqlite_type)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
280 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
281 case SQLITE_INTEGER:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
282 return DEITA_COLUMN_TYPE_INTEGER;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
283 case SQLITE_FLOAT:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
284 return DEITA_COLUMN_TYPE_REAL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
285 case SQLITE_TEXT:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
286 return DEITA_COLUMN_TYPE_TEXT;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
287 case SQLITE_BLOB:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
288 return DEITA_COLUMN_TYPE_BLOB;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
289 case SQLITE_NULL:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
290 default:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
291 return DEITA_COLUMN_TYPE_NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
292 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
293 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
294
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
295 const char* deita__sqlite_result_set_get_text(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
296 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
297 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
298 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
299 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
300 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
301
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
302 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
303 const unsigned char *text = sqlite3_column_text(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
304
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
305 return (const char*)text;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
306 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
307
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
308 int64 deita__sqlite_result_set_get_integer(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
309 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
310 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
311 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
312 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
313 return 0;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
314
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
315 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
316 return sqlite3_column_int64(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
317 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
318
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
319 double deita__sqlite_result_set_get_real(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
320 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
321 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
322 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
323 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
324 return 0.0;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
325
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
326 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
327 return sqlite3_column_double(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
328 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
329
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
330 void deita__sqlite_result_set_free(Deita_Result_Set *p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
331 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
332 if (!p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
333 return;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
334
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
335 if (p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
336 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
337 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
338 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
339 p_result_set->native_result = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
340 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
341 }