Make cdb_service_params return a table for all services #302
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user