# shellcheck shell=dash
# alias subcommand: list and resolve pre-defined indicator aliases

___x_cmd_dbnomics_alias(){
    case "${1:-}" in
        -h|--help) ___x_cmd help -m dbnomics alias "$@"; return ;;
    esac

    local op="" fmt="tsv" q=""
    while [ "$#" -gt 0 ]; do
        case "$1" in
            ls|list|get) op="$1"; shift ;;
            --csv)       fmt="csv"; shift ;;
            --tsv)       fmt="tsv"; shift ;;
            --json)      fmt="json"; shift ;;
            *)           q="$1"; shift ;;
        esac
    done
    [ -n "$op" ] || op="ls"

    case "$op" in
        ls|list) ___x_cmd_dbnomics_alias___ls "$fmt" "$q" ;;
        get)     ___x_cmd_dbnomics_alias___get "$q" ;;
    esac
}

___x_cmd_dbnomics_alias___ls(){
    local fmt="$1" q="$2"
    case "$fmt" in
        tsv)  ___x_cmd_dbnomics_alias___list "$q" ;;
        csv)  ___x_cmd_dbnomics_alias___list "$q" | tr '\t' ',' ;;
        json) ___x_cmd_dbnomics_alias___list "$q" | awk -F'\t' '
            BEGIN { print "[{\"alias\":\"alias\",\"id\":\"provider/dataset/series\",\"desc\":\"description\"}" }
            { printf ",{\"alias\":\"%s\",\"id\":\"%s\",\"desc\":\"%s\"}\n", $1, $2, $3 }
            END { print "]" }
        ' | jq -s '.[0]' ;;
    esac
}

___x_cmd_dbnomics_alias___get(){
    local alias="$1"
    [ -n "$alias" ] || M='Provide an alias name' N=dbnomics log:ret:1
    local resolved
    resolved="$(___x_cmd_dbnomics_alias___resolve "$alias")"
    [ -n "$resolved" ] || M="Unknown alias: $alias" N=dbnomics log:ret:1
    printf '%s\n' "$resolved"
}
