Added Insert/Delete/Update script functionality for foreign table objects
parent
dca6951e74
commit
aa1c283514
|
@ -157,6 +157,19 @@ class ForeignTableView(PGChildNodeView, DataTypeReader):
|
||||||
|
|
||||||
* dependencies(gid, sid, did, scid, foid):
|
* dependencies(gid, sid, did, scid, foid):
|
||||||
- Returns the dependencies for the Foreign Table object.
|
- Returns the dependencies for the Foreign Table object.
|
||||||
|
|
||||||
|
* select_sql(gid, sid, did, scid, foid):
|
||||||
|
- Returns sql for Script
|
||||||
|
|
||||||
|
* insert_sql(gid, sid, did, scid, foid):
|
||||||
|
- Returns sql for Script
|
||||||
|
|
||||||
|
* update_sql(gid, sid, did, scid, foid):
|
||||||
|
- Returns sql for Script
|
||||||
|
|
||||||
|
* delete_sql(gid, sid, did, scid, foid):
|
||||||
|
- Returns sql for Script
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
node_type = blueprint.node_type
|
node_type = blueprint.node_type
|
||||||
|
@ -193,7 +206,11 @@ class ForeignTableView(PGChildNodeView, DataTypeReader):
|
||||||
'get_foreign_servers': [{'get': 'get_foreign_servers'},
|
'get_foreign_servers': [{'get': 'get_foreign_servers'},
|
||||||
{'get': 'get_foreign_servers'}],
|
{'get': 'get_foreign_servers'}],
|
||||||
'get_tables': [{'get': 'get_tables'}, {'get': 'get_tables'}],
|
'get_tables': [{'get': 'get_tables'}, {'get': 'get_tables'}],
|
||||||
'get_columns': [{'get': 'get_columns'}, {'get': 'get_columns'}]
|
'get_columns': [{'get': 'get_columns'}, {'get': 'get_columns'}],
|
||||||
|
'select_sql': [{'get': 'select_sql'}],
|
||||||
|
'insert_sql': [{'get': 'insert_sql'}],
|
||||||
|
'update_sql': [{'get': 'update_sql'}],
|
||||||
|
'delete_sql': [{'get': 'delete_sql'}]
|
||||||
})
|
})
|
||||||
|
|
||||||
def validate_request(f):
|
def validate_request(f):
|
||||||
|
@ -1118,4 +1135,141 @@ AND relkind != 'c'))"""
|
||||||
|
|
||||||
return {"ftoptions": variables_lst}
|
return {"ftoptions": variables_lst}
|
||||||
|
|
||||||
|
|
||||||
|
@check_precondition
|
||||||
|
def select_sql(self, gid, sid, did, scid, foid):
|
||||||
|
"""
|
||||||
|
SELECT script sql for the object
|
||||||
|
|
||||||
|
Args:
|
||||||
|
gid: Server Group Id
|
||||||
|
sid: Server Id
|
||||||
|
did: Database Id
|
||||||
|
scid: Schema Id
|
||||||
|
foid: Foreign Table Id
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
SELECT Script sql for the object
|
||||||
|
"""
|
||||||
|
data = self._fetch_properties(gid, sid, did, scid, foid)
|
||||||
|
|
||||||
|
columns = []
|
||||||
|
for c in data['columns']:
|
||||||
|
columns.append(self.qtIdent(self.conn, c['attname']))
|
||||||
|
|
||||||
|
if len(columns) > 0:
|
||||||
|
columns = ", ".join(columns)
|
||||||
|
else:
|
||||||
|
columns = '*'
|
||||||
|
|
||||||
|
sql = "SELECT {0}\n\tFROM {1};".format(
|
||||||
|
columns,
|
||||||
|
self.qtIdent(self.conn, data['basensp'], data['name'])
|
||||||
|
)
|
||||||
|
|
||||||
|
return ajax_response(response=sql)
|
||||||
|
|
||||||
|
@check_precondition
|
||||||
|
def insert_sql(self, gid, sid, did, scid, foid):
|
||||||
|
"""
|
||||||
|
INSERT script sql for the object
|
||||||
|
|
||||||
|
Args:
|
||||||
|
gid: Server Group Id
|
||||||
|
sid: Server Id
|
||||||
|
did: Database Id
|
||||||
|
scid: Schema Id
|
||||||
|
foid: Foreign Table Id
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
INSERT Script sql for the object
|
||||||
|
"""
|
||||||
|
data = self._fetch_properties(gid, sid, did, scid, foid)
|
||||||
|
|
||||||
|
columns = []
|
||||||
|
values = []
|
||||||
|
|
||||||
|
# Now we have all list of columns which we need
|
||||||
|
if 'columns' in data:
|
||||||
|
for c in data['columns']:
|
||||||
|
columns.append(self.qtIdent(self.conn, c['attname']))
|
||||||
|
values.append('?')
|
||||||
|
|
||||||
|
if len(columns) > 0:
|
||||||
|
columns = ", ".join(columns)
|
||||||
|
values = ", ".join(values)
|
||||||
|
sql = "INSERT INTO {0}(\n\t{1})\n\tVALUES ({2});".format(
|
||||||
|
self.qtIdent(self.conn, data['basensp'], data['name']),
|
||||||
|
columns, values
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
sql = gettext('-- Please create column(s) first...')
|
||||||
|
|
||||||
|
return ajax_response(response=sql)
|
||||||
|
|
||||||
|
@check_precondition
|
||||||
|
def update_sql(self, gid, sid, did, scid, foid):
|
||||||
|
"""
|
||||||
|
UPDATE script sql for the object
|
||||||
|
|
||||||
|
Args:
|
||||||
|
gid: Server Group Id
|
||||||
|
sid: Server Id
|
||||||
|
did: Database Id
|
||||||
|
scid: Schema Id
|
||||||
|
foid: Foreign Table Id
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
UPDATE Script sql for the object
|
||||||
|
"""
|
||||||
|
data = self._fetch_properties(gid, sid, did, scid, foid)
|
||||||
|
|
||||||
|
columns = []
|
||||||
|
|
||||||
|
# Now we have all list of columns which we need
|
||||||
|
if 'columns' in data:
|
||||||
|
for c in data['columns']:
|
||||||
|
columns.append(self.qtIdent(self.conn, c['attname']))
|
||||||
|
|
||||||
|
if len(columns) > 0:
|
||||||
|
if len(columns) == 1:
|
||||||
|
columns = columns[0]
|
||||||
|
columns += "=?"
|
||||||
|
else:
|
||||||
|
columns = "=?, ".join(columns)
|
||||||
|
columns += "=?"
|
||||||
|
|
||||||
|
sql = "UPDATE {0}\n\tSET {1}\n\tWHERE <condition>;".format(
|
||||||
|
self.qtIdent(self.conn, data['basensp'], data['name']),
|
||||||
|
columns
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
sql = gettext('-- Please create column(s) first...')
|
||||||
|
|
||||||
|
return ajax_response(response=sql)
|
||||||
|
|
||||||
|
@check_precondition
|
||||||
|
def delete_sql(self, gid, sid, did, scid, foid):
|
||||||
|
"""
|
||||||
|
DELETE script sql for the object
|
||||||
|
|
||||||
|
Args:
|
||||||
|
gid: Server Group Id
|
||||||
|
sid: Server Id
|
||||||
|
did: Database Id
|
||||||
|
scid: Schema Id
|
||||||
|
foid: Foreign Table Id
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
DELETE Script sql for the object
|
||||||
|
"""
|
||||||
|
data = self._fetch_properties(gid, sid, did, scid, foid)
|
||||||
|
|
||||||
|
sql = "DELETE FROM {0}\n\tWHERE <condition>;".format(
|
||||||
|
self.qtIdent(self.conn, data['basensp'], data['name'])
|
||||||
|
)
|
||||||
|
|
||||||
|
return ajax_response(response=sql)
|
||||||
|
|
||||||
|
|
||||||
ForeignTableView.register_node_view(blueprint)
|
ForeignTableView.register_node_view(blueprint)
|
||||||
|
|
|
@ -534,6 +534,7 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
|
||||||
collection_type: 'coll-foreign-table',
|
collection_type: 'coll-foreign-table',
|
||||||
hasSQL: true,
|
hasSQL: true,
|
||||||
hasDepends: true,
|
hasDepends: true,
|
||||||
|
hasScriptTypes: ['create', 'select', 'insert', 'update', 'delete'],
|
||||||
parent_type: ['schema'],
|
parent_type: ['schema'],
|
||||||
Init: function() {
|
Init: function() {
|
||||||
/* Avoid multiple registration of menus */
|
/* Avoid multiple registration of menus */
|
||||||
|
|
Loading…
Reference in New Issue