diff -r c98ff52cd806 -r bd08116b8af4 test/main.c --- 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 #include +#include +#include + 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");