Added Insert/Delete/Update script functionality for foreign table objects

pull/3/head
Murtuza Zabuawala 2016-05-24 12:41:00 +05:30 committed by Akshay Joshi
parent dca6951e74
commit aa1c283514
2 changed files with 156 additions and 1 deletions

View File

@ -157,6 +157,19 @@ class ForeignTableView(PGChildNodeView, DataTypeReader):
* dependencies(gid, sid, did, scid, foid):
- 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
@ -193,7 +206,11 @@ class ForeignTableView(PGChildNodeView, DataTypeReader):
'get_foreign_servers': [{'get': 'get_foreign_servers'},
{'get': 'get_foreign_servers'}],
'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):
@ -1118,4 +1135,141 @@ AND relkind != 'c'))"""
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)

View File

@ -534,6 +534,7 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
collection_type: 'coll-foreign-table',
hasSQL: true,
hasDepends: true,
hasScriptTypes: ['create', 'select', 'insert', 'update', 'delete'],
parent_type: ['schema'],
Init: function() {
/* Avoid multiple registration of menus */