# shellcheck shell=dash

# DBnomics API v22
# https://api.db.nomics.world/v22
___X_CMD_DBNOMICS_API_ENDPOINT="https://api.db.nomics.world/v22"

___x_cmd_dbnomics_api(){
    local op="${1:-get}"
    local _curl_url="${___X_CMD_DBNOMICS_API_ENDPOINT}$2"
    shift 2

    case "$op" in
        get)    ___x_cmd_dbnomics_api_get "$_curl_url" "$@" ;;
        *)      N=dbnomics M="Unknown API method: $op" log:ret:64 ;;
    esac
}

___x_cmd_dbnomics_api_get(){
    local _curl_url="$1"
    ___x_cmd ccmd 1h -- ___x_cmd_dbnomics_api_get___nocache "$_curl_url"
}

___x_cmd_dbnomics_api_get___nocache(){
    local _curl_url="$1"
    ___x_cmd curl -sS -L -f -X GET \
        -H "Accept: application/json" \
        "$_curl_url"
}

# Section: JSON helpers -- all use jq
# Usage: ... | ___x_cmd_dbnomics___json2csv <docs_key> <field1> <field2> ...
___x_cmd_dbnomics___json2csv(){
    local docs_key="$1"; shift
    local fields="" sep=""
    for f in "$@"; do
        fields="${fields}${sep}${f}"
        sep=","
    done
    jq -r ".${docs_key}[] | [${fields}] | @csv"
}

# Usage: ... | ___x_cmd_dbnomics___json2tsv <docs_key> <field1> <field2> ...
___x_cmd_dbnomics___json2tsv(){
    local docs_key="$1"; shift
    local fields="" sep=""
    for f in "$@"; do
        fields="${fields}${sep}${f}"
        sep=","
    done
    jq -r ".${docs_key}[] | [${fields}] | @tsv"
}
# EndSection
