74 lines
3.0 KiB
PL/PgSQL
74 lines
3.0 KiB
PL/PgSQL
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_monthly_quota(
|
|
username TEXT,
|
|
orgname TEXT,
|
|
service TEXT)
|
|
RETURNS integer AS $$
|
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
|
|
|
if 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)]
|
|
return user_isolines_config.isolines_quota
|
|
else:
|
|
raise 'not implemented'
|
|
$$ LANGUAGE plpythonu;
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_remaining_quota(
|
|
username TEXT,
|
|
orgname TEXT,
|
|
service TEXT)
|
|
RETURNS integer AS $$
|
|
from datetime import date
|
|
from cartodb_services.metrics.user import UserMetricsService
|
|
|
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
|
|
|
if 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)]
|
|
monthly_quota = user_isolines_config.isolines_quota
|
|
|
|
user_service = UserMetricsService(user_isolines_config, redis_conn)
|
|
current_used = user_service.used_quota(user_isolines_config.service_type, date.today())
|
|
return monthly_quota - current_used
|
|
else:
|
|
raise 'not implemented'
|
|
$$ LANGUAGE plpythonu;
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_soft_limit(
|
|
username TEXT,
|
|
orgname TEXT,
|
|
service TEXT)
|
|
RETURNS boolean AS $$
|
|
plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username))
|
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
|
|
|
if 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)]
|
|
return user_isolines_config.soft_isolines_limit
|
|
else:
|
|
raise 'not implemented'
|
|
$$ LANGUAGE plpythonu;
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_provider(
|
|
username TEXT,
|
|
orgname TEXT,
|
|
service 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']
|
|
|
|
if 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)]
|
|
return user_isolines_config.provider
|
|
else:
|
|
raise 'not implemented'
|
|
$$ LANGUAGE plpythonu;
|