From 603fbbbc3f11375bfd0e319c90f93da166d8a604 Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Thu, 10 Nov 2016 19:23:01 +0100 Subject: [PATCH] Make cdb_service_params return a table for all services #302 --- server/extension/sql/200_quotas.sql | 48 +++++++++++++++-------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/server/extension/sql/200_quotas.sql b/server/extension/sql/200_quotas.sql index 9245337..0b57781 100644 --- a/server/extension/sql/200_quotas.sql +++ b/server/extension/sql/200_quotas.sql @@ -7,6 +7,7 @@ CREATE TYPE cdb_dataservices_server.service_type AS ENUM ( ); CREATE TYPE cdb_dataservices_server.service_params AS ( + service cdb_dataservices_server.service_type, monthly_quota NUMERIC, used_quota NUMERIC, 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( username TEXT, - orgname TEXT, - service TEXT) -RETURNS cdb_dataservices_server.service_params AS $$ - import cartodb_services.metrics.quota as quota + orgname TEXT) +RETURNS SETOF cdb_dataservices_server.service_params AS $$ from cartodb_services.metrics.user import UserMetricsService 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'] today = date.today() + ret = [] - if service == quota.Service.ISOLINES: - plpy.execute("SELECT cdb_dataservices_server._get_isolines_routing_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) - user_isolines_config = GD["user_isolines_routing_config_{0}".format(username)] - user_service = UserMetricsService(user_isolines_config, redis_conn) + #-- Isolines + service = 'isolines' + plpy.execute("SELECT cdb_dataservices_server._get_isolines_routing_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + 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 - used_quota = user_service.used_quota(user_isolines_config.service_type, today) - soft_limit = user_isolines_config.soft_isolines_limit - provider = user_isolines_config.provider - elif service == quota.Service.HIRES_GEOCODER: - 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_isolines_config.isolines_quota + used_quota = user_service.used_quota(user_isolines_config.service_type, today) + soft_limit = user_isolines_config.soft_isolines_limit + provider = user_isolines_config.provider + ret += [[service, 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 - else: - raise 'not implemented' + #-- Hires Geocoder + service = 'hires_geocoder' + 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) - 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;