diff --git a/autoload/db_ui/schemas.vim b/autoload/db_ui/schemas.vim index 81732d8..75de9d8 100644 --- a/autoload/db_ui/schemas.vim +++ b/autoload/db_ui/schemas.vim @@ -227,6 +227,11 @@ if !exists('g:db_adapter_sqlite3') let g:db_adapter_sqlite3 = 'db#adapter#sqlite#' endif +if !exists('g:db_adapter_duckdb') + let g:db_adapter_duckdb = 'db#adapter#duckdb#' +endif + + function! db_ui#schemas#get(scheme) abort return get(s:schemas, a:scheme, {}) endfunction diff --git a/autoload/db_ui/table_helpers.vim b/autoload/db_ui/table_helpers.vim index 14c3c18..8547e46 100644 --- a/autoload/db_ui/table_helpers.vim +++ b/autoload/db_ui/table_helpers.vim @@ -182,6 +182,14 @@ let s:sqlserver = { \ 'Describe': 'exec sp_help ''{schema}.{table}''', \ } +let s:duckdb = { + \ 'List': g:db_ui_default_query, + \ 'Columns': "SELECT column_name, data_type, is_nullable, column_default FROM temp.information_schema.columns WHERE table_name = '{table}'", + \ 'Indexes': "SELECT * FROM duckdb_indexes() WHERE table_name = '{table}'", + \ 'Foreign Keys': "SELECT * FROM duckdb_constraints() WHERE table_name = '{table}' AND constraint_type = 'FOREIGN KEY'", + \ 'Primary Keys': "SELECT * FROM duckdb_constraints() WHERE table_name = '{table}' AND constraint_type = 'PRIMARY KEY'" + \ } + let s:helpers = { \ 'bigquery': s:bigquery, \ 'postgresql': s:postgres, @@ -191,6 +199,7 @@ let s:helpers = { \ 'sqlite': s:sqlite, \ 'sqlserver': s:sqlserver, \ 'mongodb': { 'List': '{table}.find()'}, + \ 'duckdb': s:duckdb, \ } let s:all = {}