diff deita/deita.h @ 75:ae6a88e6e484

[Deita] Simple DB connection lib.
author June Park <parkjune1995@gmail.com>
date Wed, 31 Dec 2025 11:20:08 -0800
parents
children f3084bca7317
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deita/deita.h	Wed Dec 31 11:20:08 2025 -0800
@@ -0,0 +1,101 @@
+#ifndef DEITA
+#define DEITA
+
+#include "dowa/dowa.h"
+
+// Database types
+typedef enum
+{
+  DEITA_DATABASE_TYPE_SQLITE3 = 0
+  // Future: DEITA_DATABASE_TYPE_POSTGRES, DEITA_DATABASE_TYPE_MYSQL
+} Deita_Database_Type;
+
+// Connection handle (opaque)
+typedef struct Deita_Connection Deita_Connection;
+
+// Result set (opaque)
+typedef struct Deita_Result_Set Deita_Result_Set;
+
+// Column value type
+typedef enum
+{
+  DEITA_COLUMN_TYPE_NULL = 0,
+  DEITA_COLUMN_TYPE_INTEGER,
+  DEITA_COLUMN_TYPE_REAL,
+  DEITA_COLUMN_TYPE_TEXT,
+  DEITA_COLUMN_TYPE_BLOB
+} Deita_Column_Type;
+
+// --- Connection Management --- //
+
+extern Deita_Connection* Deita_Connection_Create(
+  Deita_Database_Type database_type,
+  const char *connection_string
+);
+
+extern void Deita_Connection_Close(Deita_Connection *p_connection);
+
+extern boolean Deita_Connection_Is_Open(Deita_Connection *p_connection);
+
+// --- Query Execution --- //
+
+extern Deita_Result_Set* Deita_Query_Execute(
+  Deita_Connection *p_connection,
+  const char *query,
+  Dowa_Arena *p_arena
+);
+
+extern Deita_Result_Set* Deita_Query_Execute_Prepared(
+  Deita_Connection *p_connection,
+  const char *query,
+  int32 parameter_count,
+  const char **parameter_values,
+  Dowa_Arena *p_arena
+);
+
+extern int32 Deita_Query_Execute_Update(
+  Deita_Connection *p_connection,
+  const char *query
+);
+
+extern int32 Deita_Query_Execute_Update_Prepared(
+  Deita_Connection *p_connection,
+  const char *query,
+  int32 parameter_count,
+  const char **parameter_values
+);
+
+// --- Result Set Access --- //
+
+extern boolean Deita_Result_Set_Next(Deita_Result_Set *p_result_set);
+
+extern int32 Deita_Result_Set_Get_Column_Count(Deita_Result_Set *p_result_set);
+
+extern const char* Deita_Result_Set_Get_Column_Name(
+  Deita_Result_Set *p_result_set,
+  int32 column_index
+);
+
+extern Deita_Column_Type Deita_Result_Set_Get_Column_Type(
+  Deita_Result_Set *p_result_set,
+  int32 column_index
+);
+
+extern const char* Deita_Result_Set_Get_Text(
+  Deita_Result_Set *p_result_set,
+  int32 column_index
+);
+
+extern int64 Deita_Result_Set_Get_Integer(
+  Deita_Result_Set *p_result_set,
+  int32 column_index
+);
+
+extern double Deita_Result_Set_Get_Real(
+  Deita_Result_Set *p_result_set,
+  int32 column_index
+);
+
+extern void Deita_Result_Set_Free(Deita_Result_Set *p_result_set);
+
+#endif