142 lines
3.6 KiB
Lua
142 lines
3.6 KiB
Lua
local sql_ft = { "sql", "mysql", "plsql" }
|
|
|
|
return {
|
|
{
|
|
"nvim-treesitter/nvim-treesitter",
|
|
optional = true,
|
|
opts = function(_, opts)
|
|
if type(opts.ensure_installed) == "table" then
|
|
vim.list_extend(opts.ensure_installed, { "sql" })
|
|
end
|
|
end,
|
|
},
|
|
{
|
|
"folke/edgy.nvim",
|
|
optional = true,
|
|
opts = function(_, opts)
|
|
opts.right = opts.right or {}
|
|
table.insert(opts.right, {
|
|
title = "Database",
|
|
ft = "dbui",
|
|
pinned = true,
|
|
open = function()
|
|
vim.cmd("DBUI")
|
|
end,
|
|
})
|
|
|
|
opts.bottom = opts.bottom or {}
|
|
table.insert(opts.bottom, {
|
|
title = "DB Query Result",
|
|
ft = "dbout",
|
|
})
|
|
end,
|
|
},
|
|
{
|
|
"hrsh7th/nvim-cmp",
|
|
opts = function(_, opts)
|
|
local autocomplete_group = vim.api.nvim_create_augroup("vimrc_autocompletion", { clear = true })
|
|
vim.api.nvim_create_autocmd("FileType", {
|
|
pattern = sql_ft,
|
|
callback = function()
|
|
table.insert(opts.sources, { name = "vim-dadbod-completion" })
|
|
end,
|
|
group = autocomplete_group,
|
|
})
|
|
end,
|
|
},
|
|
{
|
|
"tpope/vim-dadbod",
|
|
cmd = { "DBUI", "DBUIToggle", "DBUIAddConnection", "DBUIFindBuffer" },
|
|
dependencies = {
|
|
{ "kristijanhusak/vim-dadbod-ui" },
|
|
{ "kristijanhusak/vim-dadbod-completion", ft = sql_ft },
|
|
{ "jsborjesson/vim-uppercase-sql", ft = sql_ft },
|
|
},
|
|
config = function()
|
|
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
|
|
vim.g.db_ui_use_nvim_notify = true
|
|
end,
|
|
keys = {
|
|
{ "<leader>Da", "<cmd>DBUIAddConnection<cr>", desc = "Add Connection" },
|
|
{ "<leader>Du", "<cmd>DBUIToggle<cr>", desc = "Toggle UI" },
|
|
{ "<leader>Df", "<cmd>DBUIFindBuffer<cr>", desc = "Find Buffer" },
|
|
{ "<leader>Dr", "<cmd>DBUIRenameBuffer<cr>", desc = "Rename Buffer" },
|
|
{ "<leader>Dq", "<cmd>DBUILastQueryInfo<cr>", desc = "Last Query Info" },
|
|
},
|
|
},
|
|
{
|
|
"folke/which-key.nvim",
|
|
opts = {
|
|
defaults = {
|
|
["<leader>D"] = { name = " database" },
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"williamboman/mason.nvim",
|
|
opts = function(_, opts)
|
|
opts.ensure_installed = opts.ensure_installed or {}
|
|
vim.list_extend(opts.ensure_installed, { "sqlls", "sqlfmt", "sqlfluff" })
|
|
end,
|
|
},
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
opts = {
|
|
servers = {
|
|
sqlls = {},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"mfussenegger/nvim-lint",
|
|
opts = function(_, opts)
|
|
local function add_linters(tbl)
|
|
for ft, linters in pairs(tbl) do
|
|
if opts.linters_by_ft[ft] == nil then
|
|
opts.linters_by_ft[ft] = linters
|
|
else
|
|
vim.list_extend(opts.linters_by_ft[ft], linters)
|
|
end
|
|
end
|
|
end
|
|
|
|
add_linters({
|
|
["sql"] = { "sqlfluff" },
|
|
["plsql"] = { "sqlfluff" },
|
|
["mysql"] = { "sqlfluff" },
|
|
})
|
|
|
|
return opts
|
|
end,
|
|
},
|
|
{
|
|
"stevearc/conform.nvim",
|
|
opts = function(_, opts)
|
|
local function add_formatters(tbl)
|
|
for ft, formatters in pairs(tbl) do
|
|
if opts.formatters_by_ft[ft] == nil then
|
|
opts.formatters_by_ft[ft] = formatters
|
|
else
|
|
vim.list_extend(opts.formatters_by_ft[ft], formatters)
|
|
end
|
|
end
|
|
end
|
|
|
|
add_formatters({
|
|
["sql"] = { "sqlfmt" },
|
|
["plsql"] = { "sqlfmt" },
|
|
["mysql"] = { "sqlfmt" },
|
|
})
|
|
end,
|
|
},
|
|
{
|
|
"luckasRanarison/nvim-devdocs",
|
|
optional = true,
|
|
ensure_installed = {
|
|
"sqlite",
|
|
"postgresql-16",
|
|
},
|
|
},
|
|
}
|