diff options
author | Amjith Ramanujam <amjith.r@gmail.com> | 2015-06-21 20:48:16 -0700 |
---|---|---|
committer | Amjith Ramanujam <amjith.r@gmail.com> | 2015-06-21 20:48:16 -0700 |
commit | 7f75f49899139a34fd3f817dd8b6776bf5713a9a (patch) | |
tree | 42bcbfabc045af84e9ecbba43300bda978263db2 | |
parent | 506db1866996db0af17f5c602556fd882fe60b0e (diff) |
Show named query usage when invoked.
-rw-r--r-- | pgcli/packages/pgspecial/iocommands.py | 41 | ||||
-rw-r--r-- | pgcli/packages/pgspecial/namedqueries.py | 36 |
2 files changed, 63 insertions, 14 deletions
diff --git a/pgcli/packages/pgspecial/iocommands.py b/pgcli/packages/pgspecial/iocommands.py index 5b93e6ce..49b5caae 100644 --- a/pgcli/packages/pgspecial/iocommands.py +++ b/pgcli/packages/pgspecial/iocommands.py @@ -101,10 +101,10 @@ def open_external_editor(filename=None, sql=''): return (query, message) @special_command('\\n', '\\n[+] [name]', 'List or execute named queries.') -def execute_named_query(cur, pattern, verbose): +def execute_named_query(cur, pattern, **_): """Returns (title, rows, headers, status)""" if pattern == '': - return list_named_queries(verbose) + return list_named_queries(True) query = namedqueries.get(pattern) title = '> {}'.format(query) @@ -127,23 +127,40 @@ def list_named_queries(verbose): else: headers = ["Name", "Query"] rows = [[r, namedqueries.get(r)] for r in namedqueries.list()] - return [('', rows, headers, "")] -@special_command('\\ns', '\\ns [name [query]]', 'Save a named query.') + if not rows: + status = namedqueries.usage + else: + status = '' + return [('', rows, headers, status)] + +@special_command('\\ns', '\\ns name query', 'Save a named query.') def save_named_query(pattern, **_): """Save a new named query. Returns (title, rows, headers, status)""" - if ' ' not in pattern: - return [(None, None, None, "Invalid argument.")] - name, query = pattern.split(' ', 1) + + usage = 'Syntax: \\ns name query.\n\n' + namedqueries.usage + if not pattern: + return [(None, None, None, usage)] + + name, _, query = pattern.partition(' ') + + # If either name or query is missing then print the usage and complain. + if (not name) or (not query): + return [(None, None, None, + usage + 'Err: Both name and query are required.')] + namedqueries.save(name, query) return [(None, None, None, "Saved.")] -@special_command('\\nd', '\\nd [name [query]]', 'Delete a named query.') +@special_command('\\nd', '\\nd [name]', 'Delete a named query.') def delete_named_query(pattern, **_): """Delete an existing named query. """ - if len(pattern) == 0: - return [(None, None, None, "Invalid argument.")] - namedqueries.delete(pattern) - return [(None, None, None, "Deleted.")] + usage = 'Syntax: \\nd name.\n\n' + namedqueries.usage + if not pattern: + return [(None, None, None, usage)] + + status = namedqueries.delete(pattern) + + return [(None, None, None, status)] diff --git a/pgcli/packages/pgspecial/namedqueries.py b/pgcli/packages/pgspecial/namedqueries.py index 0c5f2957..00d241ba 100644 --- a/pgcli/packages/pgspecial/namedqueries.py +++ b/pgcli/packages/pgspecial/namedqueries.py @@ -1,7 +1,36 @@ +# -*- coding: utf-8 -*- class NamedQueries(object): section_name = 'named queries' + usage = u'''Named Queries are a way to save frequently used queries +with a short name. Think of them as favorites. +Examples: + + # Save a new named query. + > \\ns simple select * from abc where a is not Null; + + # List all named queries. + > \\n+ + ╒════════╤═══════════════════════════════════════╕ + │ Name │ Query │ + ╞════════╪═══════════════════════════════════════╡ + │ simple │ SELECT * FROM abc where a is not NULL │ + ╘════════╧═══════════════════════════════════════╛ + + # Run a named query. + > \\n simple + ╒════════╤════════╕ + │ a │ b │ + ╞════════╪════════╡ + │ 日本語 │ 日本語 │ + ╘════════╧════════╛ + + # Delete a named query. + > \\nd simple + simple: Deleted +''' + def __init__(self, config): self.config = config @@ -18,9 +47,12 @@ class NamedQueries(object): self.config.write() def delete(self, name): - if self.section_name in self.config and name in self.config[self.section_name]: + try: del self.config[self.section_name][name] - self.config.write() + except KeyError: + return '%s: Not Found.' % name + self.config.write() + return '%s: Deleted' % name from ...config import load_config namedqueries = NamedQueries(load_config('~/.pgclirc')) |