test/main.c

changeset 8
bd08116b8af4
parent 7
c98ff52cd806
child 10
80f9d007cb52
--- a/test/main.c	Fri Dec 13 11:24:55 2024 +0100
+++ b/test/main.c	Sat Dec 14 17:03:31 2024 +0100
@@ -33,6 +33,9 @@
 #include <dbutils/sqlite.h>
 #include <dbutils/db.h>
 
+#include <cx/buffer.h>
+#include <cx/printf.h>
+
 const char *sql_create_table_person =
 "create table if not exists Person ("
 "person_id integer primary key autoincrement, "
@@ -161,8 +164,23 @@
     if(persons) {
         CxIterator i = cxListIterator(persons);
         cx_foreach(Person *, p, i) {
-            printf("{ person_id = %" PRId64 ", name = \"%s\", email = \"%s\", age = %d, iscustomer = %s, hash = %" PRIu64 " }\n",
-                    p->person_id, p->name.ptr, p->email.ptr, p->age, p->iscustomer ? "true" : "false", p->hash);
+            CxBuffer rolebuffer;
+            cxBufferInit(&rolebuffer, NULL, 256, 0, CX_BUFFER_AUTO_EXTEND|CX_BUFFER_FREE_CONTENTS);
+            cxBufferPut(&rolebuffer, '[');
+            if(p->roles) {
+                CxIterator r = cxListIterator(p->roles);
+                char *addseparator = "";
+                cx_foreach(Role *, role, r) {
+                    cx_bprintf(&rolebuffer, "%s{ role_id = %d, name = \"%s\"}", addseparator, role->role_id, role->name.ptr);
+                    addseparator = ", ";
+                }
+            }
+            cxBufferPut(&rolebuffer, ']');
+            cxBufferPut(&rolebuffer, 0);
+            printf("{ person_id = %" PRId64 ", name = \"%s\", email = \"%s\", age = %d, iscustomer = %s, hash = %" PRIu64 " roles = %s }\n",
+                    p->person_id, p->name.ptr, p->email.ptr, p->age, p->iscustomer ? "true" : "false", p->hash, rolebuffer.space);
+            
+            cxBufferDestroy(&rolebuffer);
         }
     } else {
         fprintf(stderr, "Error\n");

mercurial