_CDB_Conf_Cache SD-based
This commit is contained in:
@@ -19,6 +19,7 @@ CREATE OR REPLACE
|
||||
FUNCTION cartodb.CDB_Conf_RemoveConf(param text)
|
||||
RETURNS void AS $$
|
||||
BEGIN
|
||||
PERFORM cartodb._CDB_Conf_Cache('remove', param);
|
||||
EXECUTE 'DELETE FROM cartodb.CDB_CONF WHERE PARAM = $1;' USING param;
|
||||
END
|
||||
$$ LANGUAGE PLPGSQL VOLATILE;
|
||||
@@ -29,7 +30,29 @@ FUNCTION cartodb.CDB_Conf_GetConf(param text)
|
||||
DECLARE
|
||||
conf TEXT;
|
||||
BEGIN
|
||||
EXECUTE 'SELECT CONF FROM cartodb.CDB_CONF WHERE PARAM = $1;' INTO conf USING param;
|
||||
EXECUTE 'select cartodb._CDB_Conf_Cache(''get'', $1) as conf;' INTO conf USING param;
|
||||
RETURN conf;
|
||||
END
|
||||
$$ LANGUAGE PLPGSQL STABLE;
|
||||
|
||||
-- Single cache function allowing SD private dict usage
|
||||
CREATE OR REPLACE
|
||||
FUNCTION cartodb._CDB_Conf_Cache(operation text, param text)
|
||||
RETURNS TEXT AS
|
||||
$$
|
||||
if 'conf' not in SD:
|
||||
SD['conf'] = dict()
|
||||
|
||||
if operation == 'remove':
|
||||
SD['conf'][param] = None
|
||||
elif operation == 'get':
|
||||
if param not in SD['conf']:
|
||||
value = None
|
||||
response = plpy.execute("SELECT conf FROM cartodb.CDB_CONF WHERE PARAM = '%s'" % param);
|
||||
if len(response) > 0:
|
||||
value = response[0]['conf']
|
||||
SD['conf'][param] = value
|
||||
return SD['conf'][param]
|
||||
else:
|
||||
raise Exception('Unknown operation: %s' % operation)
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
@@ -10,7 +10,7 @@ $$
|
||||
url = '/api/v1/databases/%s/groups' % database_name
|
||||
body = '{ "name": "%s", "database_role": "%s" }' % (group_name, group_role)
|
||||
query = "select cartodb._CDB_Group_API_Request('POST', '%s', '%s') as response_status" % (url, body)
|
||||
plpy.execute(query)[0]['response_status']
|
||||
plpy.execute(query)
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
CREATE OR REPLACE
|
||||
@@ -21,7 +21,7 @@ $$
|
||||
|
||||
url = '/api/v1/databases/%s/groups/%s' % (database_name, group_name)
|
||||
query = "select cartodb._CDB_Group_API_Request('DELETE', '%s', '') as response_status" % url
|
||||
plpy.execute(query)[0]['response_status']
|
||||
plpy.execute(query)
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
CREATE OR REPLACE
|
||||
@@ -33,7 +33,7 @@ $$
|
||||
url = '/api/v1/databases/%s/groups/%s' % (database_name, old_group_name)
|
||||
body = '{ "name": "%s", "database_role": "%s" }' % (new_group_name, new_group_role)
|
||||
query = "select cartodb._CDB_Group_API_Request('PUT', '%s', '%s') as response_status" % (url, body)
|
||||
plpy.execute(query)[0]['response_status']
|
||||
plpy.execute(query)
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
CREATE OR REPLACE
|
||||
@@ -45,7 +45,7 @@ $$
|
||||
url = '/api/v1/databases/%s/groups/%s/users' % (database_name, group_name)
|
||||
body = '{ "username": "%s" }' % username
|
||||
query = "select cartodb._CDB_Group_API_Request('POST', '%s', '%s') as response_status" % (url, body)
|
||||
plpy.execute(query)[0]['response_status']
|
||||
plpy.execute(query)
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
CREATE OR REPLACE
|
||||
@@ -56,7 +56,7 @@ $$
|
||||
|
||||
url = '/api/v1/databases/%s/groups/%s/users/%s' % (database_name, group_name, username)
|
||||
query = "select cartodb._CDB_Group_API_Request('DELETE', '%s', '') as response_status" % url
|
||||
plpy.execute(query)[0]['response_status']
|
||||
plpy.execute(query)
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
DO LANGUAGE 'plpgsql' $$
|
||||
@@ -129,4 +129,6 @@ $$
|
||||
if last_err is not None:
|
||||
plpy.error('Fatal Group API error: ' + str(last_err))
|
||||
raise last_err
|
||||
|
||||
return None
|
||||
$$ LANGUAGE 'plpythonu' VOLATILE;
|
||||
|
||||
Reference in New Issue
Block a user