diff options
author | Darik Gamble <darik.gamble@gmail.com> | 2015-05-21 07:41:17 -0400 |
---|---|---|
committer | Darik Gamble <darik.gamble@gmail.com> | 2015-05-23 08:33:40 -0400 |
commit | 5d6f1e1a4edf756ad2409dff6d04847597d2b1e9 (patch) | |
tree | c0463805e124e28dec2b9e4eb50ac8afef652224 | |
parent | 5692782bd283952a72111100820b47091c264702 (diff) |
Store datatype metadata alongside schemas, tables, columns, and functions
-rwxr-xr-x | pgcli/main.py | 3 | ||||
-rw-r--r-- | pgcli/pgcompleter.py | 18 |
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 |