Mercurial
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 |
| 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 } |