68 lines
2.4 KiB
Lua
68 lines
2.4 KiB
Lua
-- Database explorer and query runner
|
|
return {
|
|
'tpope/vim-dadbod',
|
|
dependencies = {
|
|
'kristijanhusak/vim-dadbod-ui', -- UI for vim-dadbod
|
|
'kristijanhusak/vim-dadbod-completion' -- Completion for SQL
|
|
},
|
|
cmd = {
|
|
'DBUI',
|
|
'DBUIToggle',
|
|
'DBUIAddConnection',
|
|
'DBUIFindBuffer',
|
|
},
|
|
init = function()
|
|
-- Save DBUI settings
|
|
vim.g.db_ui_save_location = vim.fn.stdpath("data") .. "/db_ui"
|
|
vim.g.db_ui_use_nerd_fonts = true
|
|
vim.g.db_ui_execute_on_save = false -- Don't auto-execute queries on save
|
|
vim.g.db_ui_table_helpers = {
|
|
-- Add useful SQL snippets
|
|
mysql = {
|
|
List = 'SELECT * FROM {table} LIMIT 100',
|
|
Indexes = 'SHOW INDEXES FROM {table}',
|
|
Foreign = 'SELECT * FROM information_schema.key_column_usage WHERE referenced_table_name = {table}',
|
|
},
|
|
postgresql = {
|
|
List = 'SELECT * FROM {table} LIMIT 100',
|
|
Indexes = 'SELECT * FROM pg_indexes WHERE tablename = {table}',
|
|
Foreign = [[
|
|
SELECT
|
|
tc.table_schema,
|
|
tc.constraint_name,
|
|
tc.table_name,
|
|
kcu.column_name,
|
|
ccu.table_schema AS foreign_table_schema,
|
|
ccu.table_name AS foreign_table_name,
|
|
ccu.column_name AS foreign_column_name
|
|
FROM
|
|
information_schema.table_constraints AS tc
|
|
JOIN information_schema.key_column_usage AS kcu
|
|
ON tc.constraint_name = kcu.constraint_name
|
|
AND tc.table_schema = kcu.table_schema
|
|
JOIN information_schema.constraint_column_usage AS ccu
|
|
ON ccu.constraint_name = tc.constraint_name
|
|
AND ccu.table_schema = tc.table_schema
|
|
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name={table};
|
|
]],
|
|
},
|
|
}
|
|
end,
|
|
config = function()
|
|
-- Enable SQL completion in SQL files and dadbod-ui buffers
|
|
vim.api.nvim_create_autocmd('FileType', {
|
|
pattern = {'sql', 'mysql', 'plsql', 'pgsql'},
|
|
callback = function()
|
|
-- Set up completion
|
|
require('cmp').setup.buffer({
|
|
sources = {
|
|
{ name = 'vim-dadbod-completion' }, -- Database-aware completion
|
|
{ name = 'nvim_lsp' }, -- LSP completion
|
|
{ name = 'buffer' }, -- Buffer words
|
|
},
|
|
})
|
|
end,
|
|
})
|
|
end,
|
|
}
|