Client with isodistance and isochrone feature working

This commit is contained in:
Mario de Frutos
2016-02-11 11:10:12 +01:00
parent f36a345db2
commit 0ca20196c0
15 changed files with 159 additions and 81 deletions

View File

@@ -60,7 +60,8 @@
- { name: country, type: text, default: 'NULL'}
- name: cdb_isodistance
return_type: SETOF isoline
return_type: SETOF cdb_dataservices_client.isoline
multi_row: true
params:
- { name: source, type: "geometry(Geometry, 4326)" }
- { name: mode, type: text }
@@ -68,7 +69,8 @@
- { name: options, type: "text[]", default: 'NULL' }
- name: cdb_isochrone
return_type: SETOF isoline
return_type: SETOF cdb_dataservices_client.isoline
multi_row: true
params:
- { name: source, type: "geometry(Geometry, 4326)" }
- { name: mode, type: text }

View File

@@ -28,6 +28,10 @@ class SqlTemplateRenderer
@function_signature['return_type']
end
def multi_row
@function_signature['multi_row']
end
def user_config_key
@function_signature['user_config_key']
end

View File

@@ -7,7 +7,7 @@
CREATE OR REPLACE FUNCTION <%= DATASERVICES_CLIENT_SCHEMA %>.<%= name %> (<%= params_with_type_and_default %>)
RETURNS <%= return_type %> AS $$
DECLARE
ret <%= return_type %>;
<% if not multi_row %>ret <%= return_type %>;<% end %>
username text;
orgname text;
BEGIN
@@ -19,8 +19,13 @@ BEGIN
IF username IS NULL OR username = '' OR username = '""' THEN
RAISE EXCEPTION 'Username is a mandatory argument, check it out';
END IF;
SELECT <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %>(username, orgname, <%= params %>) INTO ret;
RETURN ret;
<% if multi_row %>
RETURN QUERY
SELECT * FROM <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %>(username, orgname, <%= params %>);
<% else %>
SELECT <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %>(username, orgname, <%= params %>) INTO ret;
RETURN ret;
<% end %>
END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

View File

@@ -1,6 +1,10 @@
CREATE OR REPLACE FUNCTION <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %> (username text, organization_name text, <%= params_with_type_and_default %>)
RETURNS <%= return_type %> AS $$
CONNECT <%= DATASERVICES_CLIENT_SCHEMA %>._server_conn_str();
<% if multi_row %>
SELECT * FROM <%= DATASERVICES_SERVER_SCHEMA %>.<%= name %> (username, organization_name, <%= params %>);
<% else %>
SELECT <%= DATASERVICES_SERVER_SCHEMA %>.<%= name %> (username, organization_name, <%= params %>);
<% end %>
$$ LANGUAGE plproxy;