Skip to content
This repository was archived by the owner on Mar 12, 2020. It is now read-only.

Commit 6d98156

Browse files
committed
Save queries support
1 parent 47a36b0 commit 6d98156

7 files changed

+88
-12
lines changed

Default (Linux).sublime-keymap

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
{ "keys": ["ctrl+alt+e"], "command": "st_show_connection_menu" },
33
{ "keys": ["ctrl+e", "ctrl+e"], "command": "st_execute" },
44
{ "keys": ["ctrl+e", "ctrl+h"], "command": "st_history" },
5-
{ "keys": ["ctrl+e", "ctrl+q"], "command": "st_query" },
65
{ "keys": ["ctrl+e", "ctrl+s"], "command": "st_show_records" },
76
{ "keys": ["ctrl+e", "ctrl+d"], "command": "st_desc_table" },
8-
{ "keys": ["ctrl+e", "ctrl+b"], "command": "st_format" }
7+
{ "keys": ["ctrl+e", "ctrl+b"], "command": "st_format" },
8+
{ "keys": ["ctrl+e", "ctrl+q"], "command": "st_save_query" },
9+
{ "keys": ["ctrl+e", "ctrl+r"], "command": "st_remove_saved_query" },
10+
{ "keys": ["ctrl+e", "ctrl+a"], "command": "st_list_queries" }
911
]

Default (OSX).sublime-keymap

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
{ "keys": ["ctrl+alt+e"], "command": "st_show_connection_menu" },
33
{ "keys": ["ctrl+e", "ctrl+e"], "command": "st_execute" },
44
{ "keys": ["ctrl+e", "ctrl+h"], "command": "st_history" },
5-
{ "keys": ["ctrl+e", "ctrl+q"], "command": "st_query" },
65
{ "keys": ["ctrl+e", "ctrl+s"], "command": "st_show_records" },
76
{ "keys": ["ctrl+e", "ctrl+d"], "command": "st_desc_table" },
8-
{ "keys": ["ctrl+e", "ctrl+b"], "command": "st_format" }
7+
{ "keys": ["ctrl+e", "ctrl+b"], "command": "st_format" },
8+
{ "keys": ["ctrl+e", "ctrl+q"], "command": "st_save_query" },
9+
{ "keys": ["ctrl+e", "ctrl+r"], "command": "st_remove_saved_query" },
10+
{ "keys": ["ctrl+e", "ctrl+a"], "command": "st_list_queries" }
911
]

Default (Windows).sublime-keymap

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
{ "keys": ["ctrl+alt+e"], "command": "st_show_connection_menu" },
33
{ "keys": ["ctrl+e", "ctrl+e"], "command": "st_execute" },
44
{ "keys": ["ctrl+e", "ctrl+h"], "command": "st_history" },
5-
{ "keys": ["ctrl+e", "ctrl+q"], "command": "st_query" },
65
{ "keys": ["ctrl+e", "ctrl+s"], "command": "st_show_records" },
76
{ "keys": ["ctrl+e", "ctrl+d"], "command": "st_desc_table" },
8-
{ "keys": ["ctrl+e", "ctrl+b"], "command": "st_format" }
7+
{ "keys": ["ctrl+e", "ctrl+b"], "command": "st_format" },
8+
{ "keys": ["ctrl+e", "ctrl+q"], "command": "st_save_query" },
9+
{ "keys": ["ctrl+e", "ctrl+r"], "command": "st_remove_saved_query" },
10+
{ "keys": ["ctrl+e", "ctrl+a"], "command": "st_list_queries" }
911
]

Default.sublime-commands

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@
2323
"caption": "ST: Table Description",
2424
"command": "st_desc_table"
2525
},
26+
{
27+
"caption": "ST: Save Query",
28+
"command": "st_save_query"
29+
},
30+
{
31+
"caption": "ST: Remove Saved Query",
32+
"command": "st_remove_saved_query"
33+
},
34+
{
35+
"caption": "ST: List and Run Saved Queries",
36+
"command": "st_list_queries"
37+
},
2638
{
2739
"caption": "ST: Format Current SQL File",
2840
"command": "st_format"

SQLTools.py

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import sublime, sublime_plugin, sys, os
22

33
sys.path.append(os.path.dirname(__file__))
4-
from SQLToolsModels import Log, Settings, Connection, Selection, Window, View, Const, History
4+
from SQLToolsModels import Log, Settings, Connection, Selection, Window, View, Const, History, Storage
55

66
class ST(sublime_plugin.EventListener):
77
conn = None
@@ -153,6 +153,50 @@ def run(self):
153153
query = Selection.get()
154154
ST.conn.execute(query, ST.display)
155155

156+
class StSaveQuery(sublime_plugin.WindowCommand):
157+
def run(self):
158+
Storage.promptQueryAlias()
159+
160+
class StListQueries(sublime_plugin.WindowCommand):
161+
def run(self):
162+
if not ST.conn:
163+
ST.showConnectionMenu()
164+
return
165+
166+
queries = Storage.getSavedQueries().get('queries')
167+
168+
if len(queries) == 0:
169+
sublime.message_dialog('No saved queries.')
170+
return
171+
172+
queriesArray = []
173+
for alias, query in queries.items():
174+
print (alias, query)
175+
queriesArray.append([alias, query])
176+
queriesArray.sort()
177+
try:
178+
Window().show_quick_panel(queriesArray, lambda index: ST.conn.execute(queriesArray[index][1], ST.display) if index != -1 else None)
179+
except Exception:
180+
pass
181+
182+
class StRemoveSavedQuery(sublime_plugin.WindowCommand):
183+
def run(self):
184+
queries = Storage.getSavedQueries().get('queries')
185+
186+
if len(queries) == 0:
187+
sublime.message_dialog('No saved queries.')
188+
return
189+
190+
queriesArray = []
191+
for alias, query in queries.items():
192+
print (alias, query)
193+
queriesArray.append([alias, query])
194+
queriesArray.sort()
195+
try:
196+
Window().show_quick_panel(queriesArray, lambda index: Storage.removeQuery(queriesArray[index][0]) if index != -1 else None)
197+
except Exception:
198+
pass
199+
156200
class StFormat(sublime_plugin.TextCommand):
157201
def run(self, edit):
158202
Selection.formatSql(edit)

SQLToolsModels.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,14 @@ def userFolder():
4242

4343

4444
class Storage:
45-
savedQueries = None
46-
selectedQuery = ''
45+
savedQueries = None
46+
savedQueriesArray = None
47+
selectedQuery = ''
4748

4849
@staticmethod
4950
def getSavedQueries():
50-
Storage.savedQueries = sublime.load_settings(Const.USER_QUERIES_FILENAME)
51+
Storage.savedQueries = sublime.load_settings(Const.USER_QUERIES_FILENAME)
52+
Storage.savedQueriesArray = Storage.savedQueries.get('queries', {})
5153
return Storage.savedQueries
5254

5355
@staticmethod
@@ -68,17 +70,27 @@ def saveQuery(alias):
6870
return
6971

7072
Storage.getSavedQueries()
71-
Storage.savedQueries.set(alias, '\n'.join(Storage.selectedQuery))
73+
Storage.savedQueriesArray[alias] = '\n'.join(Storage.selectedQuery)
74+
Storage.savedQueries.set('queries', Storage.savedQueriesArray)
7275
Storage.flushSavedQueries()
7376

77+
@staticmethod
78+
def removeQuery(alias):
79+
if len(alias) <= 0:
80+
return
81+
82+
Storage.getSavedQueries()
83+
Storage.savedQueriesArray.pop(alias)
84+
Storage.savedQueries.set('queries', Storage.savedQueriesArray)
85+
Storage.flushSavedQueries()
7486

7587
@staticmethod
7688
def getSavedQuery(alias):
7789
if len(alias) <= 0:
7890
return
7991

8092
Storage.getSavedQueries()
81-
return Storage.savedQueries.get(alias)
93+
return Storage.savedQueriesArray[alias]
8294

8395
class Connection:
8496

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
{
2+
"queries": {
3+
}
24
}

0 commit comments

Comments
 (0)