| 110 | return skip_obj_type |
| 111 | |
| 112 | def search(self, text, obj_type=None): |
| 113 | skip_obj_type = [] |
| 114 | conn = self.manager.connection(did=self.did) |
| 115 | last_system_oid = DATABASE_LAST_SYSTEM_OID |
| 116 | |
| 117 | show_node_prefs = self.get_show_node_prefs() |
| 118 | node_labels = self.get_supported_types(skip_check=True) |
| 119 | # escape the single quote from search text |
| 120 | text = text.replace("'", "''") |
| 121 | skip_obj_type = self._check_permission(obj_type, conn, |
| 122 | skip_obj_type) |
| 123 | |
| 124 | # Column catalog_level has values as |
| 125 | # N - Not a catalog schema |
| 126 | # D - Catalog schema with DB support - pg_catalog |
| 127 | # O - Catalog schema with object support only - info schema, sys |
| 128 | status, res = conn.execute_dict( |
| 129 | self.get_sql('search.sql', |
| 130 | search_text=text.lower(), obj_type=obj_type, |
| 131 | show_system_objects=self.show_system_objects, |
| 132 | show_node_prefs=show_node_prefs, _=gettext, |
| 133 | last_system_oid=last_system_oid, |
| 134 | skip_obj_type=skip_obj_type) |
| 135 | ) |
| 136 | |
| 137 | if not status: |
| 138 | return status, res |
| 139 | |
| 140 | ret_val = [ |
| 141 | { |
| 142 | 'name': row['obj_name'], |
| 143 | 'type': row['obj_type'], |
| 144 | 'type_label': node_labels[row['obj_type']], |
| 145 | 'path': row['obj_path'], |
| 146 | 'show_node': row['show_node'], |
| 147 | 'other_info': row['other_info'], |
| 148 | 'catalog_level': row['catalog_level'], |
| 149 | } |
| 150 | for row in res['rows'] |
| 151 | ] |
| 152 | return True, ret_val |