Make cdb_service_params return a table for all services #302

This commit is contained in:
Rafa de la Torre
2016-11-10 19:23:01 +01:00
parent 3fa686ec65
commit 603fbbbc3f

View File

@@ -7,6 +7,7 @@ CREATE TYPE cdb_dataservices_server.service_type AS ENUM (
); );
CREATE TYPE cdb_dataservices_server.service_params AS ( CREATE TYPE cdb_dataservices_server.service_params AS (
service cdb_dataservices_server.service_type,
monthly_quota NUMERIC, monthly_quota NUMERIC,
used_quota NUMERIC, used_quota NUMERIC,
soft_limit BOOLEAN, soft_limit BOOLEAN,
@@ -16,10 +17,8 @@ CREATE TYPE cdb_dataservices_server.service_params AS (
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_params( CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_service_params(
username TEXT, username TEXT,
orgname TEXT, orgname TEXT)
service TEXT) RETURNS SETOF cdb_dataservices_server.service_params AS $$
RETURNS cdb_dataservices_server.service_params AS $$
import cartodb_services.metrics.quota as quota
from cartodb_services.metrics.user import UserMetricsService from cartodb_services.metrics.user import UserMetricsService
from datetime import date from datetime import date
@@ -27,30 +26,33 @@ RETURNS cdb_dataservices_server.service_params AS $$
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
today = date.today() today = date.today()
ret = []
if service == quota.Service.ISOLINES: #-- Isolines
plpy.execute("SELECT cdb_dataservices_server._get_isolines_routing_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) service = 'isolines'
user_isolines_config = GD["user_isolines_routing_config_{0}".format(username)] plpy.execute("SELECT cdb_dataservices_server._get_isolines_routing_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
user_service = UserMetricsService(user_isolines_config, redis_conn) user_isolines_config = GD["user_isolines_routing_config_{0}".format(username)]
user_service = UserMetricsService(user_isolines_config, redis_conn)
monthly_quota = user_isolines_config.isolines_quota monthly_quota = user_isolines_config.isolines_quota
used_quota = user_service.used_quota(user_isolines_config.service_type, today) used_quota = user_service.used_quota(user_isolines_config.service_type, today)
soft_limit = user_isolines_config.soft_isolines_limit soft_limit = user_isolines_config.soft_isolines_limit
provider = user_isolines_config.provider provider = user_isolines_config.provider
elif service == quota.Service.HIRES_GEOCODER: ret += [[service, monthly_quota, used_quota, soft_limit, provider]]
plpy.execute("SELECT cdb_dataservices_server._get_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
user_geocoder_config = GD["user_geocoder_config_{0}".format(username)]
user_service = UserMetricsService(user_geocoder_config, redis_conn)
monthly_quota = user_geocoder_config.geocoding_quota #-- Hires Geocoder
used_quota = user_service.used_quota(user_geocoder_config, today) service = 'hires_geocoder'
soft_limit = user_geocoder_config.soft_geocoding_limit plpy.execute("SELECT cdb_dataservices_server._get_geocoder_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname)))
provider = user_geocoder_config.provider user_geocoder_config = GD["user_geocoder_config_{0}".format(username)]
else: user_service = UserMetricsService(user_geocoder_config, redis_conn)
raise 'not implemented'
return [monthly_quota, used_quota, soft_limit, provider] monthly_quota = user_geocoder_config.geocoding_quota
used_quota = user_service.used_quota(user_geocoder_config, today)
soft_limit = user_geocoder_config.soft_geocoding_limit
provider = user_geocoder_config.provider
ret += [[service, monthly_quota, used_quota, soft_limit, provider]]
return ret
$$ LANGUAGE plpythonu; $$ LANGUAGE plpythonu;