summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarik Gamble <darik.gamble@gmail.com>2015-05-21 07:41:17 -0400
committerDarik Gamble <darik.gamble@gmail.com>2015-05-23 08:33:40 -0400
commit5d6f1e1a4edf756ad2409dff6d04847597d2b1e9 (patch)
treec0463805e124e28dec2b9e4eb50ac8afef652224
parent5692782bd283952a72111100820b47091c264702 (diff)
Store datatype metadata alongside schemas, tables, columns, and functions
-rwxr-xr-xpgcli/main.py3
-rw-r--r--pgcli/pgcompleter.py18
2 files changed, 19 insertions, 2 deletions
diff --git a/pgcli/main.py b/pgcli/main.py
index 7df76b41..d12d5f52 100755
--- a/pgcli/main.py
+++ b/pgcli/main.py
@@ -363,6 +363,9 @@ class PGCli(object):
# functions
completer.extend_functions(pgexecute.functions())
+ # types
+ completer.extend_datatypes(pgexecute.datatypes())
+
# databases
completer.extend_database_names(pgexecute.databases())
diff --git a/pgcli/pgcompleter.py b/pgcli/pgcompleter.py
index a0272835..30a65295 100644
--- a/pgcli/pgcompleter.py
+++ b/pgcli/pgcompleter.py
@@ -52,7 +52,8 @@ class PGCompleter(Completer):
self.special_commands = []
self.databases = []
- self.dbmetadata = {'tables': {}, 'views': {}, 'functions': {}}
+ self.dbmetadata = {'tables': {}, 'views': {}, 'functions': {},
+ 'datatypes': {}}
self.search_path = []
self.all_completions = set(self.keywords + self.functions)
@@ -152,13 +153,26 @@ class PGCompleter(Completer):
metadata[schema][func] = None
self.all_completions.add(func)
+ def extend_datatypes(self, type_data):
+
+ # dbmetadata['datatypes'][schema_name][type_name] should store type
+ # metadata, such as composite type field names. Currently, we're not
+ # storing any metadata beyond typename, so just store None
+ meta = self.dbmetadata['datatypes']
+
+ for t in type_data:
+ schema, type_name = self.escaped_names(t)
+ meta[schema][type_name] = None
+ self.all_completions.add(type_name)
+
def set_search_path(self, search_path):
self.search_path = self.escaped_names(search_path)
def reset_completions(self):
self.databases = []
self.search_path = []
- self.dbmetadata = {'tables': {}, 'views': {}, 'functions': {}}
+ self.dbmetadata = {'tables': {}, 'views': {}, 'functions': {},
+ 'datatypes': {}}
self.all_completions = set(self.keywords + self.functions)
@staticmethod