-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #171 from CartoDB/development
Change loopback to observatory just to call the observatory extension functions
- Loading branch information
Showing
9 changed files
with
1,378 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
113 changes: 113 additions & 0 deletions
113
server/extension/cdb_dataservices_server--0.7.2--0.7.3.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
--DO NOT MODIFY THIS FILE, IT IS GENERATED AUTOMATICALLY FROM SOURCES | ||
-- Complain if script is sourced in psql, rather than via CREATE EXTENSION | ||
\echo Use "ALTER EXTENSION cdb_dataservices_server UPDATE TO '0.7.3'" to load this file. \quit | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._obs_server_conn_str( | ||
username TEXT, | ||
orgname TEXT) | ||
RETURNS text AS $$ | ||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) | ||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] | ||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) | ||
user_obs_snapshot_config = GD["user_obs_snapshot_config_{0}".format(username)] | ||
|
||
return user_obs_snapshot_config.connection_str | ||
$$ LANGUAGE plpythonu; | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetDemographicSnapshot( | ||
username TEXT, | ||
orgname TEXT, | ||
geom geometry(Geometry, 4326), | ||
time_span TEXT DEFAULT '2009 - 2013', | ||
geometry_level TEXT DEFAULT '"us.census.tiger".block_group') | ||
RETURNS json AS $$ | ||
CONNECT cdb_dataservices_server._obs_server_conn_str(username, orgname); | ||
SELECT cdb_observatory.OBS_GetDemographicSnapshot(geom, time_span, geometry_level); | ||
$$ LANGUAGE plproxy; | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.obs_get_demographic_snapshot( | ||
username TEXT, | ||
orgname TEXT, | ||
geom geometry(Geometry, 4326), | ||
time_span TEXT DEFAULT '2009 - 2013', | ||
geometry_level TEXT DEFAULT '"us.census.tiger".block_group') | ||
RETURNS json AS $$ | ||
from cartodb_services.metrics import QuotaService | ||
import json | ||
|
||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) | ||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] | ||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) | ||
user_obs_snapshot_config = GD["user_obs_snapshot_config_{0}".format(username)] | ||
|
||
quota_service = QuotaService(user_obs_snapshot_config, redis_conn) | ||
if not quota_service.check_user_quota(): | ||
plpy.error('You have reached the limit of your quota') | ||
|
||
try: | ||
obs_plan = plpy.prepare("SELECT cdb_dataservices_server._OBS_GetDemographicSnapshot($1, $2, $3, $4, $5) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text", "text"]) | ||
result = plpy.execute(obs_plan, [username, orgname, geom, time_span, geometry_level]) | ||
if result: | ||
quota_service.increment_success_service_use() | ||
return result[0]['snapshot'] | ||
else: | ||
quota_service.increment_empty_service_use() | ||
return None | ||
except BaseException as e: | ||
import sys, traceback | ||
type_, value_, traceback_ = sys.exc_info() | ||
quota_service.increment_failed_service_use() | ||
error_msg = 'There was an error trying to use get_geographic_snapshot: {0}'.format(e) | ||
plpy.notice(traceback.format_tb(traceback_)) | ||
plpy.error(error_msg) | ||
finally: | ||
quota_service.increment_total_service_use() | ||
$$ LANGUAGE plpythonu; | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetSegmentSnapshot( | ||
username TEXT, | ||
orgname TEXT, | ||
geom geometry(Geometry, 4326), | ||
geometry_level TEXT DEFAULT '"us.census.tiger".block_group') | ||
RETURNS json AS $$ | ||
CONNECT cdb_dataservices_server._obs_server_conn_str(username, orgname); | ||
SELECT cdb_observatory.OBS_GetSegmentSnapshot(geom, geometry_level); | ||
$$ LANGUAGE plproxy; | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.obs_get_segment_snapshot( | ||
username TEXT, | ||
orgname TEXT, | ||
geom geometry(Geometry, 4326), | ||
geometry_level TEXT DEFAULT '"us.census.tiger".block_group') | ||
RETURNS json AS $$ | ||
from cartodb_services.metrics import QuotaService | ||
import json | ||
|
||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) | ||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] | ||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) | ||
user_obs_snapshot_config = GD["user_obs_snapshot_config_{0}".format(username)] | ||
|
||
quota_service = QuotaService(user_obs_snapshot_config, redis_conn) | ||
if not quota_service.check_user_quota(): | ||
plpy.error('You have reached the limit of your quota') | ||
|
||
try: | ||
obs_plan = plpy.prepare("SELECT cdb_dataservices_server._OBS_GetSegmentSnapshot($1, $2, $3, $4) as snapshot;", ["text", "text", "geometry(Geometry, 4326)", "text"]) | ||
result = plpy.execute(obs_plan, [username, orgname, geom, geometry_level]) | ||
if result: | ||
quota_service.increment_success_service_use() | ||
return result[0]['snapshot'] | ||
else: | ||
quota_service.increment_empty_service_use() | ||
return None | ||
except BaseException as e: | ||
import sys, traceback | ||
type_, value_, traceback_ = sys.exc_info() | ||
quota_service.increment_failed_service_use() | ||
error_msg = 'There was an error trying to use get_segment_snapshot: {0}'.format(e) | ||
plpy.notice(traceback.format_tb(traceback_)) | ||
plpy.error(error_msg) | ||
finally: | ||
quota_service.increment_total_service_use() | ||
$$ LANGUAGE plpythonu; |
103 changes: 103 additions & 0 deletions
103
server/extension/cdb_dataservices_server--0.7.3--0.7.2.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
--DO NOT MODIFY THIS FILE, IT IS GENERATED AUTOMATICALLY FROM SOURCES | ||
-- Complain if script is sourced in psql, rather than via CREATE EXTENSION | ||
\echo Use "ALTER EXTENSION cdb_dataservices_server UPDATE TO '0.7.2'" to load this file. \quit | ||
DROP FUNCTION IF EXISTS cdb_dataservices_server._OBS_GetDemographicSnapshot(text, text, geometry(Geometry, 4326), text, text); | ||
DROP FUNCTION IF EXISTS cdb_dataservices_server._OBS_GetSegmentSnapshot(text, text, geometry(Geometry, 4326), text); | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.obs_get_demographic_snapshot( | ||
username TEXT, | ||
orgname TEXT, | ||
geom geometry(Geometry, 4326), | ||
time_span TEXT DEFAULT '2009 - 2013', | ||
geometry_level TEXT DEFAULT '"us.census.tiger".block_group') | ||
RETURNS json AS $$ | ||
CONNECT cdb_dataservices_server._obs_server_conn_str(username, orgname); | ||
SELECT cdb_dataservices_server._obs_get_demographic_snapshot (username, orgname, geom, time_span, geometry_level); | ||
$$ LANGUAGE plproxy; | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._obs_get_demographic_snapshot( | ||
username TEXT, | ||
orgname TEXT, | ||
geom geometry(Geometry, 4326), | ||
time_span TEXT DEFAULT '2009 - 2013', | ||
geometry_level TEXT DEFAULT '"us.census.tiger".block_group') | ||
RETURNS json AS $$ | ||
from cartodb_services.metrics import QuotaService | ||
import json | ||
|
||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) | ||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] | ||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) | ||
user_obs_snapshot_config = GD["user_obs_snapshot_config_{0}".format(username)] | ||
|
||
quota_service = QuotaService(user_obs_snapshot_config, redis_conn) | ||
if not quota_service.check_user_quota(): | ||
plpy.error('You have reached the limit of your quota') | ||
|
||
try: | ||
obs_plan = plpy.prepare("SELECT cdb_observatory.OBS_GetDemographicSnapshot($1, $2, $3) as snapshot;", ["geometry(Geometry, 4326)", "text", "text"]) | ||
result = plpy.execute(obs_plan, [geom, time_span, geometry_level]) | ||
if result: | ||
quota_service.increment_success_service_use() | ||
return result[0]['snapshot'] | ||
else: | ||
quota_service.increment_empty_service_use() | ||
return None | ||
except BaseException as e: | ||
import sys, traceback | ||
type_, value_, traceback_ = sys.exc_info() | ||
quota_service.increment_failed_service_use() | ||
error_msg = 'There was an error trying to use get_geographic_snapshot: {0}'.format(e) | ||
plpy.notice(traceback.format_tb(traceback_)) | ||
plpy.error(error_msg) | ||
finally: | ||
quota_service.increment_total_service_use() | ||
$$ LANGUAGE plpythonu; | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server.obs_get_segment_snapshot( | ||
username TEXT, | ||
orgname TEXT, | ||
geom geometry(Geometry, 4326), | ||
geometry_level TEXT DEFAULT '"us.census.tiger".block_group') | ||
RETURNS json AS $$ | ||
CONNECT cdb_dataservices_server._obs_server_conn_str(username, orgname); | ||
SELECT cdb_dataservices_server._obs_get_segment_snapshot (username, orgname, geom, geometry_level); | ||
$$ LANGUAGE plproxy; | ||
|
||
CREATE OR REPLACE FUNCTION cdb_dataservices_server._obs_get_segment_snapshot( | ||
username TEXT, | ||
orgname TEXT, | ||
geom geometry(Geometry, 4326), | ||
geometry_level TEXT DEFAULT '"us.census.tiger".block_group') | ||
RETURNS json AS $$ | ||
from cartodb_services.metrics import QuotaService | ||
import json | ||
|
||
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) | ||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] | ||
plpy.execute("SELECT cdb_dataservices_server._get_obs_snapshot_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) | ||
user_obs_snapshot_config = GD["user_obs_snapshot_config_{0}".format(username)] | ||
|
||
quota_service = QuotaService(user_obs_snapshot_config, redis_conn) | ||
if not quota_service.check_user_quota(): | ||
plpy.error('You have reached the limit of your quota') | ||
|
||
try: | ||
obs_plan = plpy.prepare("SELECT cdb_observatory.OBS_GetSegmentSnapshot($1, $2) as snapshot;", ["geometry(Geometry, 4326)", "text"]) | ||
result = plpy.execute(obs_plan, [geom, geometry_level]) | ||
if result: | ||
quota_service.increment_success_service_use() | ||
return result[0]['snapshot'] | ||
else: | ||
quota_service.increment_empty_service_use() | ||
return None | ||
except BaseException as e: | ||
import sys, traceback | ||
type_, value_, traceback_ = sys.exc_info() | ||
quota_service.increment_failed_service_use() | ||
error_msg = 'There was an error trying to use get_segment_snapshot: {0}'.format(e) | ||
plpy.notice(traceback.format_tb(traceback_)) | ||
plpy.error(error_msg) | ||
finally: | ||
quota_service.increment_total_service_use() | ||
$$ LANGUAGE plpythonu; |
Oops, something went wrong.