add dbuSimpleGetList* functions

Thu, 27 Feb 2025 20:53:55 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Thu, 27 Feb 2025 20:53:55 +0100
changeset 19
55de75c839e8
parent 18
e78ef06fe062
child 20
6cfda23ae154

add dbuSimpleGetList* functions

dbutils/db.c file | annotate | diff | comparison | revisions
dbutils/dbutils/db.h file | annotate | diff | comparison | revisions
--- a/dbutils/db.c	Thu Feb 27 20:47:33 2025 +0100
+++ b/dbutils/db.c	Thu Feb 27 20:53:55 2025 +0100
@@ -197,11 +197,22 @@
     return -1;
 }
 
-
-int dbuSimpleGetInt64WithIntParam(DBUConnection *conn, const char *sql, int64_t param, int64_t *result) {
+static DBUQuery* createIntParamQuery(DBUConnection *conn, const char *sql, int64_t param) {
     DBUQuery *q = conn->createQuery(conn, cxDefaultAllocator);
     dbuQuerySetSQL(q, sql);
     dbuQuerySetParamInt64(q, 1, param);
+    return q;
+}
+
+static DBUQuery* createStringParamQuery(DBUConnection *conn, const char *sql, cxstring param) {
+    DBUQuery *q = conn->createQuery(conn, cxDefaultAllocator);
+    dbuQuerySetSQL(q, sql);
+    dbuQuerySetParamString(q, 1, param);
+    return q;
+}
+
+int dbuSimpleGetInt64WithIntParam(DBUConnection *conn, const char *sql, int64_t param, int64_t *result) {
+    DBUQuery *q = createIntParamQuery(conn, sql, param);
     int err = dbuQueryExec(q);
     dbuQueryFree(q);
     if(!err) {
@@ -212,9 +223,7 @@
 }
 
 int dbuSimpleGetInt64WithStringParam(DBUConnection *conn, const char *sql, cxstring param, int64_t *result) {
-    DBUQuery *q = conn->createQuery(conn, cxDefaultAllocator);
-    dbuQuerySetSQL(q, sql);
-    dbuQuerySetParamString(q, 1, param);
+    DBUQuery *q = createStringParamQuery(conn, sql, param);
     int err = dbuQueryExec(q);
     dbuQueryFree(q);
     if(!err) {
@@ -225,9 +234,7 @@
 }
 
 int dbuSimpleGetStringWithIntParam(DBUConnection *conn, const char *sql, int64_t param, const CxAllocator *a, cxmutstr *result) {
-    DBUQuery *q = conn->createQuery(conn, cxDefaultAllocator);
-    dbuQuerySetSQL(q, sql);
-    dbuQuerySetParamInt64(q, 1, param);
+    DBUQuery *q = createIntParamQuery(conn, sql, param);
     int err = dbuQueryExec(q);
     dbuQueryFree(q);
     if(!err) {
@@ -238,9 +245,7 @@
 }
 
 int dbuSimpleGetStringWithStringParam(DBUConnection *conn, const char *sql, cxstring param, const CxAllocator *a, cxmutstr *result) {
-    DBUQuery *q = conn->createQuery(conn, cxDefaultAllocator);
-    dbuQuerySetSQL(q, sql);
-    dbuQuerySetParamString(q, 1, param);
+    DBUQuery *q = createStringParamQuery(conn, sql, param);
     int err = dbuQueryExec(q);
     dbuQueryFree(q);
     if(!err) {
@@ -249,3 +254,19 @@
     }
     return err;
 }
+
+CxList* dbuSimpleGetListWithIntParam(DBUConnection *conn, const char *sql, int64_t param, const CxAllocator *a, DBUClass *type) {
+    DBUQuery *q = createIntParamQuery(conn, sql, param);
+    DBUObjectBuilder *builder = dbuObjectBuilder(type, q, a);
+    CxList *list = dbuObjectBuilderGetList(builder);
+    dbuObjectBuilderDestroy(builder);
+    return list;
+}
+
+CxList* dbuSimpleGetListWithStringParam(DBUConnection *conn, const char *sql, cxstring param, const CxAllocator *a, DBUClass *type) {
+    DBUQuery *q = createStringParamQuery(conn, sql, param);
+    DBUObjectBuilder *builder = dbuObjectBuilder(type, q, a);
+    CxList *list = dbuObjectBuilderGetList(builder);
+    dbuObjectBuilderDestroy(builder);
+    return list;
+}
--- a/dbutils/dbutils/db.h	Thu Feb 27 20:47:33 2025 +0100
+++ b/dbutils/dbutils/db.h	Thu Feb 27 20:53:55 2025 +0100
@@ -153,6 +153,8 @@
 int dbuSimpleGetInt64WithStringParam(DBUConnection *conn, const char *sql, cxstring param, int64_t *result);
 int dbuSimpleGetStringWithIntParam(DBUConnection *conn, const char *sql, int64_t param, const CxAllocator *a, cxmutstr *result);
 int dbuSimpleGetStringWithStringParam(DBUConnection *conn, const char *sql, cxstring param, const CxAllocator *a, cxmutstr *result);
+CxList* dbuSimpleGetListWithIntParam(DBUConnection *conn, const char *sql, int64_t param, const CxAllocator *a, DBUClass *type);
+CxList* dbuSimpleGetListWithStringParam(DBUConnection *conn, const char *sql, cxstring param, const CxAllocator *a, DBUClass *type);
 
 #ifdef __cplusplus
 }

mercurial