void SG_group__list( SG_context* pCtx, SG_repo* pRepo, SG_varray** ppva ) { SG_string* pstr_where = NULL; SG_stringarray* psa_results = NULL; char* psz_hid_cs_leaf = NULL; SG_vhash* pvh_group = NULL; SG_varray* pva_result = NULL; SG_stringarray* psa_fields = NULL; SG_ERR_CHECK( SG_zing__get_leaf__fail_if_needs_merge(pCtx, pRepo, SG_DAGNUM__USERS, &psz_hid_cs_leaf) ); SG_ERR_CHECK( SG_STRINGARRAY__ALLOC(pCtx, &psa_fields, 2) ); SG_ERR_CHECK( SG_stringarray__add(pCtx, psa_fields, "recid") ); SG_ERR_CHECK( SG_stringarray__add(pCtx, psa_fields, "name") ); SG_ERR_CHECK( SG_zing__query(pCtx, pRepo, SG_DAGNUM__USERS, psz_hid_cs_leaf, "group", NULL, "name #ASC", 0, 0, psa_fields, &pva_result) ); *ppva = pva_result; pva_result = NULL; fail: SG_VHASH_NULLFREE(pCtx, pvh_group); SG_NULLFREE(pCtx, psz_hid_cs_leaf); SG_VARRAY_NULLFREE(pCtx, pva_result); SG_STRINGARRAY_NULLFREE(pCtx, psa_results); SG_STRING_NULLFREE(pCtx, pstr_where); SG_STRINGARRAY_NULLFREE(pCtx, psa_fields); }
void SG_vc_hooks__lookup_by_interface( SG_context* pCtx, SG_repo* pRepo, const char* psz_interface, SG_varray** ppva ) { char* psz_hid_cs_leaf = NULL; SG_varray* pva_fields = NULL; SG_varray* pva = NULL; char buf_where[SG_HID_MAX_BUFFER_LENGTH + 64]; char *iEscape = NULL; const char *ivar = NULL; SG_ERR_CHECK( SG_zing__get_leaf(pCtx, pRepo, NULL, SG_DAGNUM__VC_HOOKS, &psz_hid_cs_leaf) ); SG_ASSERT(psz_hid_cs_leaf); SG_ERR_CHECK( SG_sqlite__escape(pCtx, psz_interface, &iEscape) ); if (iEscape) ivar = iEscape; else ivar = psz_interface; SG_ERR_CHECK( SG_sprintf(pCtx, buf_where, sizeof(buf_where), "interface == '%s'", ivar) ); SG_ERR_CHECK( SG_VARRAY__ALLOC(pCtx, &pva_fields) ); SG_ERR_CHECK( SG_varray__append__string__sz(pCtx, pva_fields, "js") ); SG_ERR_CHECK( SG_varray__append__string__sz(pCtx, pva_fields, "module") ); SG_ERR_CHECK( SG_varray__append__string__sz(pCtx, pva_fields, "version") ); SG_ERR_CHECK( SG_varray__append__string__sz(pCtx, pva_fields, SG_ZING_FIELD__HIDREC) ); SG_ERR_CHECK( SG_zing__query(pCtx, pRepo, SG_DAGNUM__VC_HOOKS, psz_hid_cs_leaf, "hook", buf_where, NULL, 0, 0, pva_fields, &pva) ); *ppva = pva; pva= NULL; fail: SG_VARRAY_NULLFREE(pCtx, pva); SG_VARRAY_NULLFREE(pCtx, pva_fields); SG_NULLFREE(pCtx, psz_hid_cs_leaf); SG_NULLFREE(pCtx, iEscape); }