-- Database client: vim-dadbod with UI for PostgreSQL, SQLite, etc. return { -- Dadbod: Database client { "kristijanhusak/vim-dadbod-ui", dependencies = { { "tpope/vim-dadbod", lazy = true }, { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, }, cmd = { "DBUI", "DBUIToggle", "DBUIAddConnection", "DBUIFindBuffer" }, keys = { { "Du", "DBUIToggle", desc = "Toggle DBUI" }, { "Da", "DBUIAddConnection", desc = "Add DB Connection" }, { "Df", "DBUIFindBuffer", desc = "Find DB Buffer" }, { "Dr", "DBUIRenameBuffer", desc = "Rename DB Buffer" }, { "Dl", "DBUILastQueryInfo", desc = "Last Query Info" }, }, init = function() vim.g.db_ui_use_nerd_fonts = 1 vim.g.db_ui_show_database_icon = 1 -- Store connections in a local file (should be gitignored) vim.g.db_ui_save_location = vim.fn.stdpath("data") .. "/db_ui" -- Use .dbout extension for query results vim.g.db_ui_execute_on_save = false -- Table helpers - useful query templates vim.g.db_ui_table_helpers = { postgresql = { Count = "SELECT COUNT(*) FROM {table}", First10 = "SELECT * FROM {table} LIMIT 10", Schema = "\\d+ {table}", }, sqlite = { Count = "SELECT COUNT(*) FROM {table}", First10 = "SELECT * FROM {table} LIMIT 10", Schema = ".schema {table}", }, } end, }, -- Which-key group labels for database { "folke/which-key.nvim", opts = { spec = { { "D", group = "database" }, }, }, }, -- Autocomplete for SQL buffers { "hrsh7th/nvim-cmp", optional = true, dependencies = { "kristijanhusak/vim-dadbod-completion", }, opts = function(_, opts) opts.sources = opts.sources or {} table.insert(opts.sources, { name = "vim-dadbod-completion" }) end, }, }