Thu, 27 Feb 2025 20:25:54 +0100
add wrapper for DBUResult fptrs
| dbutils/db.c | file | annotate | diff | comparison | revisions | |
| dbutils/dbutils/db.h | file | annotate | diff | comparison | revisions |
--- a/dbutils/db.c Tue Feb 25 21:12:11 2025 +0100 +++ b/dbutils/db.c Thu Feb 27 20:25:54 2025 +0100 @@ -82,6 +82,43 @@ } +int dbuResultHasData(DBUResult *result) { + return result->hasData(result); +} + +int dbuResultIsOk(DBUResult *result) { + return result->isOk(result); +} + +int dbuResultNextRow(DBUResult *result) { + return result->nextRow(result); +} + +cxstring dbuResultGetText(DBUResult *result, int field) { + return result->getText(result, field); +} + +int64_t dbuResultGetInt(DBUResult *result, int field) { + if(result->optional_getInt) { + return result->optional_getInt(result, field); + } else { + cxstring s = result->getText(result, 0); + int64_t value = 0; + cx_strtoi64(s, &value, 10); + return value; + } +} + +DBUBytes dbuResultGetBinary(DBUResult *result, int field) { + if(result->optional_getBinary) { + return result->optional_getBinary(result, field); + } else { + cxstring bin = result->getText(result, field); + return (DBUBytes) { (const unsigned char*)bin.ptr, bin.length }; + } +} + + int dbuResultAsInt32(DBUResult *r, int32_t *result) { int64_t i;
--- a/dbutils/dbutils/db.h Tue Feb 25 21:12:11 2025 +0100 +++ b/dbutils/dbutils/db.h Thu Feb 27 20:25:54 2025 +0100 @@ -109,6 +109,14 @@ DBUResult* dbuQueryGetResult(DBUQuery *q); void dbuQueryFree(DBUQuery *q); +int dbuResultHasData(DBUResult *result); +int dbuResultIsOk(DBUResult *result); +int dbuResultNextRow(DBUResult *result); +cxstring dbuResultGetText(DBUResult *result, int field); +int64_t dbuResultGetInt(DBUResult *result, int field); +DBUBytes dbuResultGetBinary(DBUResult *result, int field); + + #define dbuResultAsValue(r, result) \ _Generic(result, \