# shellcheck shell=dash

# Section: providers
# GET /providers
___x_cmd_dbnomics_provider(){
    [ "$#" -gt 0 ] || set -- ls
    local op="$1"; shift
    case "$op" in
        ls|list)      ___x_cmd_dbnomics_provider_ls   "$@" ;;
        get)          ___x_cmd_dbnomics_provider_get  "$@" ;;
        --app|--raw|--json|--csv|--tsv|--limit|--offset)
                        set -- "$op" "$@"
                        ___x_cmd_dbnomics_provider_ls "$@" ;;
        -h|--help)    ___x_cmd help -m dbnomics provider "$@" ;;
        *)            ___x_cmd_dbnomics_provider_get "$op" "$@" ;;
    esac
}

___x_cmd_dbnomics_provider_ls(){
    local op="--app"
    while [ "$#" -gt 0 ]; do
        case "$1" in
            --app|--raw|--json|--csv|--tsv)
                op="$1"; shift ;;
            -h|--help)
                ___x_cmd help -m dbnomics provider ls "$@"; return ;;
            *) break ;;
        esac
    done
    case "$op" in
        --app)        ___x_cmd_dbnomics_provider_ls___app   "$@" ;;
        --raw)        ___x_cmd_dbnomics_provider_ls___raw   "$@" ;;
        --json)       ___x_cmd_dbnomics_provider_ls___json  "$@" ;;
        --csv)        ___x_cmd_dbnomics_provider_ls___csv   "$@" ;;
        --tsv)        ___x_cmd_dbnomics_provider_ls___tsv   "$@" ;;
    esac
}

___x_cmd_dbnomics_provider_ls___raw(){
    local arg=""
    while [ "$#" -gt 0 ]; do
        case "$1" in
            --app|--raw|--json|--csv|--tsv) shift ;;
            --limit)    arg="${arg:+${arg}&}limit=$2"; shift 2 ;;
            --offset)   arg="${arg:+${arg}&}offset=$2"; shift 2 ;;
            *)          break ;;
        esac
    done
    [ -n "$arg" ] && arg="?${arg}"
    ___x_cmd_dbnomics_api get "/providers${arg}"
}

___x_cmd_dbnomics_provider_ls___json(){
    ___x_cmd_dbnomics_provider_ls___raw "$@" | jq .
}

___x_cmd_dbnomics_provider_ls___csv(){
    ___x_cmd_dbnomics_provider_ls___raw "$@" \
        | ___x_cmd_dbnomics___json2csv providers.docs .code .name .region .website .indexed_at \
        | ___x_cmd csv header --add code name region website indexed_at
}

___x_cmd_dbnomics_provider_ls___tsv(){
    printf "code\tname\tregion\twebsite\tindexed_at\n"
    ___x_cmd_dbnomics_provider_ls___raw "$@" \
        | ___x_cmd_dbnomics___json2tsv providers.docs .code .name .region .website .indexed_at
}

___x_cmd_dbnomics_provider_ls___app(){
    if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual ; then
        ___x_cmd_dbnomics_provider_ls___csv "$@" | ___x_cmd csv app
    else
        ___x_cmd_dbnomics_provider_ls___tsv "$@"
    fi
}

# GET /providers/{provider_code}
___x_cmd_dbnomics_provider_get(){
    local op="--app"
    while [ "$#" -gt 0 ]; do
        case "$1" in
            --app|--raw|--json)
                op="$1"; shift ;;
            -h|--help)
                ___x_cmd help -m dbnomics provider get "$@"; return ;;
            *) break ;;
        esac
    done
    case "$op" in
        --app)        ___x_cmd_dbnomics_provider_get___app   "$@" ;;
        --raw)        ___x_cmd_dbnomics_provider_get___raw   "$@" ;;
        --json)       ___x_cmd_dbnomics_provider_get___json  "$@" ;;
    esac
}

___x_cmd_dbnomics_provider_get___raw(){
    local provider_code="$1"
    [ -n "$provider_code" ] || M='Provide a provider code' N=dbnomics log:ret:1
    ___x_cmd_dbnomics_api get "/providers/${provider_code}"
}

___x_cmd_dbnomics_provider_get___json(){
    ___x_cmd_dbnomics_provider_get___raw "$@" | jq .
}

___x_cmd_dbnomics_provider_get___app(){
    ___x_cmd_dbnomics_provider_get___json "$@"
}
# EndSection
