annotate deita/d_sqlite.c @ 266:efaf4c63cc94

fix clean production bundle staging Recreate deployment staging before copying the Bazel bundle and verify required inference runtime paths before promoting it. Co-authored-by: Copilot <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Fri, 07 Aug 2026 12:52:30 -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 }