Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
32 changes: 32 additions & 0 deletions autoload/db/adapter/googleads.vim
Original file line number Diff line number Diff line change
@@ -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
13 changes: 13 additions & 0 deletions doc/dadbod.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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://<customer_id>/
googleads:<customer_id>
<
Queries are executed by invoking:
>
gaql <customer_id> <query>
<
See the `gaql` documentation (https://github.com/getyourguide/gaql-cli) for
more details on authentication and configuration.

*dadbod-impala*
Impala ~
>
Expand Down