diff --git a/README.markdown b/README.markdown index fe7717a..85fca8e 100644 --- a/README.markdown +++ b/README.markdown @@ -11,6 +11,7 @@ take on [dbext.vim][], improving on it on the following ways: - Big Query - ClickHouse - DuckDB + - Google Ads (GAQL) - Impala - jq - MongoDB diff --git a/autoload/db/adapter/googleads.vim b/autoload/db/adapter/googleads.vim new file mode 100644 index 0000000..d12c212 --- /dev/null +++ b/autoload/db/adapter/googleads.vim @@ -0,0 +1,32 @@ +function! db#adapter#googleads#canonicalize(url) abort + return db#url#canonicalize_file(a:url) +endfunction + +function! db#adapter#googleads#auth_input() abort + return v:false +endfunction + +function! s:customer_id(url) abort + let parsed = db#url#parse(a:url) + if has_key(parsed, 'host') + return parsed.host + endif + return substitute(get(parsed, 'opaque', ''), '/\+$', '', '') +endfunction + +function! db#adapter#googleads#input(url, in) abort + let query = '' + if filereadable(a:in) + let query = join(readfile(a:in, 'b'), "\n") + endif + + return ['gaql', s:customer_id(a:url), query] +endfunction + +function! db#adapter#googleads#input_extension(...) abort + return 'gaql' +endfunction + +function! db#adapter#googleads#output_extension(...) abort + return 'json' +endfunction diff --git a/doc/dadbod.txt b/doc/dadbod.txt index 6e3af02..626930f 100644 --- a/doc/dadbod.txt +++ b/doc/dadbod.txt @@ -121,6 +121,19 @@ DuckDB ~ An empty path portion uses an in-memory database, which is occasionally useful for an interactive invocation. + *dadbod-googleads* +Google Ads +> + googleads:/// + googleads: +< +Queries are executed by invoking: +> + gaql +< +See the `gaql` documentation (https://github.com/getyourguide/gaql-cli) for +more details on authentication and configuration. + *dadbod-impala* Impala ~ >