annotate plugins/dbtables.vim @ 0:a4ec03f77554

I don't know...
author luka
date Fri, 11 Apr 2025 21:07:37 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a4ec03f77554 I don't know...
luka
parents:
diff changeset
1 let g:db_user = "budgeter_db_user" " Replace with your default database username
a4ec03f77554 I don't know...
luka
parents:
diff changeset
2 let g:db_password = "qSTedfw39(0" " Replace with your default database password
a4ec03f77554 I don't know...
luka
parents:
diff changeset
3 let g:db_name = "budgeter" " Replace with your default database name
a4ec03f77554 I don't know...
luka
parents:
diff changeset
4 let g:db_host = "127.0.0.1" " Replace with your default database name
a4ec03f77554 I don't know...
luka
parents:
diff changeset
5
a4ec03f77554 I don't know...
luka
parents:
diff changeset
6
a4ec03f77554 I don't know...
luka
parents:
diff changeset
7 function! s:ExecuteDBQuery(query)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
8 " Fetch the list of tables from the database
a4ec03f77554 I don't know...
luka
parents:
diff changeset
9 let db_user = shellescape(g:db_user)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
10 let db_password = shellescape(g:db_password)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
11 let db_name = shellescape(g:db_name)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
12 let db_host = shellescape(g:db_host)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
13
a4ec03f77554 I don't know...
luka
parents:
diff changeset
14 " Command to fetch tables
a4ec03f77554 I don't know...
luka
parents:
diff changeset
15 let command = 'mariadb --user=' . db_user . ' --password=' . db_password . ' -e "' . a:query . '" --database=' . db_name . ' --host=' . db_host
a4ec03f77554 I don't know...
luka
parents:
diff changeset
16 " echo "Running command: " . command
a4ec03f77554 I don't know...
luka
parents:
diff changeset
17 " Capture both stdout and stderr
a4ec03f77554 I don't know...
luka
parents:
diff changeset
18 let result = systemlist(command . ' 2>&1')
a4ec03f77554 I don't know...
luka
parents:
diff changeset
19
a4ec03f77554 I don't know...
luka
parents:
diff changeset
20 " Check for errors
a4ec03f77554 I don't know...
luka
parents:
diff changeset
21 if v:shell_error != 0
a4ec03f77554 I don't know...
luka
parents:
diff changeset
22 echoerr "Shell command failed: " . command
a4ec03f77554 I don't know...
luka
parents:
diff changeset
23 echoerr join(result, "\n")
a4ec03f77554 I don't know...
luka
parents:
diff changeset
24 return
a4ec03f77554 I don't know...
luka
parents:
diff changeset
25 endif
a4ec03f77554 I don't know...
luka
parents:
diff changeset
26 return result
a4ec03f77554 I don't know...
luka
parents:
diff changeset
27 endfunction
a4ec03f77554 I don't know...
luka
parents:
diff changeset
28
a4ec03f77554 I don't know...
luka
parents:
diff changeset
29
a4ec03f77554 I don't know...
luka
parents:
diff changeset
30 function! s:OpenDBTablesWindow()
a4ec03f77554 I don't know...
luka
parents:
diff changeset
31 " Open a new vertical split window
a4ec03f77554 I don't know...
luka
parents:
diff changeset
32 execute '34 vsplit'
a4ec03f77554 I don't know...
luka
parents:
diff changeset
33 " Create a new buffer
a4ec03f77554 I don't know...
luka
parents:
diff changeset
34 enew
a4ec03f77554 I don't know...
luka
parents:
diff changeset
35 " Set buffer name to "DBTables"
a4ec03f77554 I don't know...
luka
parents:
diff changeset
36 file DBTables
a4ec03f77554 I don't know...
luka
parents:
diff changeset
37
a4ec03f77554 I don't know...
luka
parents:
diff changeset
38 let tables = s:ExecuteDBQuery("SHOW TABLES;")
a4ec03f77554 I don't know...
luka
parents:
diff changeset
39
a4ec03f77554 I don't know...
luka
parents:
diff changeset
40 " Display the tables in the buffer
a4ec03f77554 I don't know...
luka
parents:
diff changeset
41 call append(0, 'Available Tables:')
a4ec03f77554 I don't know...
luka
parents:
diff changeset
42 call remove(tables, 0)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
43 for table in tables
a4ec03f77554 I don't know...
luka
parents:
diff changeset
44 call append('$', table)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
45 endfor
a4ec03f77554 I don't know...
luka
parents:
diff changeset
46
a4ec03f77554 I don't know...
luka
parents:
diff changeset
47 " Set buffer options
a4ec03f77554 I don't know...
luka
parents:
diff changeset
48 setlocal buftype=nofile
a4ec03f77554 I don't know...
luka
parents:
diff changeset
49 setlocal bufhidden=wipe
a4ec03f77554 I don't know...
luka
parents:
diff changeset
50 setlocal nobuflisted
a4ec03f77554 I don't know...
luka
parents:
diff changeset
51 setlocal noswapfile
a4ec03f77554 I don't know...
luka
parents:
diff changeset
52 setlocal nomodifiable
a4ec03f77554 I don't know...
luka
parents:
diff changeset
53 setlocal nonumber
a4ec03f77554 I don't know...
luka
parents:
diff changeset
54 setlocal norelativenumber
a4ec03f77554 I don't know...
luka
parents:
diff changeset
55 setlocal winfixwidth
a4ec03f77554 I don't know...
luka
parents:
diff changeset
56
a4ec03f77554 I don't know...
luka
parents:
diff changeset
57 " Map <Enter> to a function that displays table data
a4ec03f77554 I don't know...
luka
parents:
diff changeset
58 nnoremap <buffer> <CR> :call <SID>ShowTableData()<CR>
a4ec03f77554 I don't know...
luka
parents:
diff changeset
59 endfunction
a4ec03f77554 I don't know...
luka
parents:
diff changeset
60
a4ec03f77554 I don't know...
luka
parents:
diff changeset
61
a4ec03f77554 I don't know...
luka
parents:
diff changeset
62 function! s:ShowTableData()
a4ec03f77554 I don't know...
luka
parents:
diff changeset
63 " Get the current line (table name)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
64 let lnum = line('.')
a4ec03f77554 I don't know...
luka
parents:
diff changeset
65 let table_name = getline(lnum)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
66
a4ec03f77554 I don't know...
luka
parents:
diff changeset
67 " Open a new tab and create a new buffer
a4ec03f77554 I don't know...
luka
parents:
diff changeset
68 tabnew
a4ec03f77554 I don't know...
luka
parents:
diff changeset
69 enew
a4ec03f77554 I don't know...
luka
parents:
diff changeset
70 " Set buffer name to the table name
a4ec03f77554 I don't know...
luka
parents:
diff changeset
71 execute 'file ' . table_name
a4ec03f77554 I don't know...
luka
parents:
diff changeset
72
a4ec03f77554 I don't know...
luka
parents:
diff changeset
73 let data = s:ExecuteDBQuery("SELECT * FROM " . table_name . ";")
a4ec03f77554 I don't know...
luka
parents:
diff changeset
74
a4ec03f77554 I don't know...
luka
parents:
diff changeset
75 " Display the table data in the buffer
a4ec03f77554 I don't know...
luka
parents:
diff changeset
76 if len(data) > 0
a4ec03f77554 I don't know...
luka
parents:
diff changeset
77 call append(0, data)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
78 else
a4ec03f77554 I don't know...
luka
parents:
diff changeset
79 call append(0, 'No data found.')
a4ec03f77554 I don't know...
luka
parents:
diff changeset
80 endif
a4ec03f77554 I don't know...
luka
parents:
diff changeset
81
a4ec03f77554 I don't know...
luka
parents:
diff changeset
82 " Set buffer options
a4ec03f77554 I don't know...
luka
parents:
diff changeset
83 setlocal buftype=nofile
a4ec03f77554 I don't know...
luka
parents:
diff changeset
84 setlocal bufhidden=wipe
a4ec03f77554 I don't know...
luka
parents:
diff changeset
85 setlocal nobuflisted
a4ec03f77554 I don't know...
luka
parents:
diff changeset
86 setlocal noswapfile
a4ec03f77554 I don't know...
luka
parents:
diff changeset
87 setlocal nomodifiable
a4ec03f77554 I don't know...
luka
parents:
diff changeset
88 endfunction
a4ec03f77554 I don't know...
luka
parents:
diff changeset
89
a4ec03f77554 I don't know...
luka
parents:
diff changeset
90 function! s:ExecuteSQLQuery()
a4ec03f77554 I don't know...
luka
parents:
diff changeset
91 " Get the content of the current buffer (SQL query)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
92 let query = join(getline(1, '$'), " ")
a4ec03f77554 I don't know...
luka
parents:
diff changeset
93 let db_user = shellescape(g:db_user)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
94 let db_password = shellescape(g:db_password)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
95 let db_name = shellescape(g:db_name)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
96
a4ec03f77554 I don't know...
luka
parents:
diff changeset
97 let data = s:ExecuteDBQuery(query)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
98
a4ec03f77554 I don't know...
luka
parents:
diff changeset
99 tabnew
a4ec03f77554 I don't know...
luka
parents:
diff changeset
100 enew
a4ec03f77554 I don't know...
luka
parents:
diff changeset
101 execute 'file SQLQueryResult'
a4ec03f77554 I don't know...
luka
parents:
diff changeset
102 call append(0, data)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
103 setlocal buftype=nofile
a4ec03f77554 I don't know...
luka
parents:
diff changeset
104 setlocal bufhidden=wipe
a4ec03f77554 I don't know...
luka
parents:
diff changeset
105 setlocal nobuflisted
a4ec03f77554 I don't know...
luka
parents:
diff changeset
106 setlocal noswapfile
a4ec03f77554 I don't know...
luka
parents:
diff changeset
107 setlocal nomodifiable
a4ec03f77554 I don't know...
luka
parents:
diff changeset
108 endfunction
a4ec03f77554 I don't know...
luka
parents:
diff changeset
109
a4ec03f77554 I don't know...
luka
parents:
diff changeset
110 function! DBConsole()
a4ec03f77554 I don't know...
luka
parents:
diff changeset
111 " Save the current cursor position
a4ec03f77554 I don't know...
luka
parents:
diff changeset
112 let save_cursor = getpos(".")
a4ec03f77554 I don't know...
luka
parents:
diff changeset
113
a4ec03f77554 I don't know...
luka
parents:
diff changeset
114 "Format the files
a4ec03f77554 I don't know...
luka
parents:
diff changeset
115 let db_user = g:db_user
a4ec03f77554 I don't know...
luka
parents:
diff changeset
116 let db_password = g:db_password
a4ec03f77554 I don't know...
luka
parents:
diff changeset
117 let db_name = g:db_name
a4ec03f77554 I don't know...
luka
parents:
diff changeset
118 " let db_host = shellescape(g:db_host)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
119 let db_host = g:db_host
a4ec03f77554 I don't know...
luka
parents:
diff changeset
120
a4ec03f77554 I don't know...
luka
parents:
diff changeset
121
a4ec03f77554 I don't know...
luka
parents:
diff changeset
122
a4ec03f77554 I don't know...
luka
parents:
diff changeset
123 let command = 'mariadb --user=' . db_user . ' --password=' . db_password . ' --database=' . db_name . ' --host=' . db_host . ' '
a4ec03f77554 I don't know...
luka
parents:
diff changeset
124 let command = substitute(command, '\n', '', 'g')
a4ec03f77554 I don't know...
luka
parents:
diff changeset
125 execute ':term ' . command
a4ec03f77554 I don't know...
luka
parents:
diff changeset
126 call setpos(".", save_cursor)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
127 endfunction
a4ec03f77554 I don't know...
luka
parents:
diff changeset
128
a4ec03f77554 I don't know...
luka
parents:
diff changeset
129 function! OpenMariaDBConsole()
a4ec03f77554 I don't know...
luka
parents:
diff changeset
130 " The command to connect to MariaDB. Customize it with your actual connection details.
a4ec03f77554 I don't know...
luka
parents:
diff changeset
131 let cmd = 'mariadb -u your_username -p your_database_name'
a4ec03f77554 I don't know...
luka
parents:
diff changeset
132
a4ec03f77554 I don't know...
luka
parents:
diff changeset
133 " Open a new terminal window at the bottom with 10 lines height.
a4ec03f77554 I don't know...
luka
parents:
diff changeset
134 " Split the window horizontally; you can adjust the height by changing `10`.
a4ec03f77554 I don't know...
luka
parents:
diff changeset
135 botright 10split
a4ec03f77554 I don't know...
luka
parents:
diff changeset
136 call termopen(cmd)
a4ec03f77554 I don't know...
luka
parents:
diff changeset
137 endfunction
a4ec03f77554 I don't know...
luka
parents:
diff changeset
138
a4ec03f77554 I don't know...
luka
parents:
diff changeset
139 nnoremap <Leader>db :call DBConsole()<cr>
a4ec03f77554 I don't know...
luka
parents:
diff changeset
140
a4ec03f77554 I don't know...
luka
parents:
diff changeset
141 command! DBTables call s:OpenDBTablesWindow()
a4ec03f77554 I don't know...
luka
parents:
diff changeset
142 command! ExecuteSQL call s:ExecuteSQLQuery()