Skip to content
Snippets Groups Projects
Commit 536db6ed authored by Michal Zander's avatar Michal Zander
Browse files

Add /version API, fix hardcoded schema name in /last-synced-block

parent c50ed935
No related branches found
No related tags found
1 merge request!98Add pattern tests for REST API
......@@ -34,8 +34,7 @@ CREATE TABLE IF NOT EXISTS reptracker_app_status
);
CREATE TABLE IF NOT EXISTS version(
schema_hash TEXT,
runtime_hash TEXT
git_hash TEXT
);
CREATE TABLE IF NOT EXISTS account_reputations
......
......@@ -104,6 +104,32 @@ declare
}
}
},
"/version": {
"get": {
"tags": [
"Other"
],
"summary": "Get reputation tracker''s version",
"description": "Get reputation tracker''s last commit hash (versions set by by hash value).\n\nSQL example\n* `SELECT * FROM reptracker_endpoints.get_reptracker_version();`\n\nREST call example\n* `GET ''https://%1$s/balance-api/version''`\n",
"operationId": "reptracker_endpoints.get_reptracker_version",
"responses": {
"200": {
"description": "reputation tracker version\n\n* Returns `TEXT`\n",
"content": {
"application/json": {
"schema": {
"type": "string"
},
"example": "c2fed8958584511ef1a66dab3dbac8c40f3518f0"
}
}
},
"404": {
"description": "App not installed"
}
}
}
},
"/last-synced-block": {
"get": {
"tags": [
......
SET ROLE reptracker_owner;
DO $$
DECLARE
__schema_name VARCHAR;
BEGIN
SHOW SEARCH_PATH INTO __schema_name;
EXECUTE format(
$BODY$
/** openapi:paths
/last-synced-block:
get:
......@@ -34,13 +42,17 @@ DROP FUNCTION IF EXISTS reptracker_endpoints.get_rep_last_synced_block;
CREATE OR REPLACE FUNCTION reptracker_endpoints.get_rep_last_synced_block()
RETURNS INT
-- openapi-generated-code-end
LANGUAGE 'plpgsql' STABLE
LANGUAGE 'plpgsql' VOLATILE
AS
$$
$pb$
BEGIN
PERFORM set_config('response.headers', '[{"Cache-Control": "public, max-age=0"}]', true);
RETURN current_block_num FROM hafd.contexts WHERE name = '%s';
END
$pb$;
PERFORM set_config('response.headers', '[{"Cache-Control": "public, max-age=2"}]', true);
RETURN hive.app_get_current_block_num( 'reptracker_app' );
$BODY$,
__schema_name, __schema_name);
END
$$;
......
SET ROLE reptracker_owner;
/** openapi:paths
/version:
get:
tags:
- Other
summary: Get reputation tracker''s version
description: |
Get reputation tracker''s last commit hash (versions set by by hash value).
SQL example
* `SELECT * FROM reptracker_endpoints.get_reptracker_version();`
REST call example
* `GET ''https://%1$s/balance-api/version''`
operationId: reptracker_endpoints.get_reptracker_version
responses:
'200':
description: |
reputation tracker version
* Returns `TEXT`
content:
application/json:
schema:
type: string
example: c2fed8958584511ef1a66dab3dbac8c40f3518f0
'404':
description: App not installed
*/
-- openapi-generated-code-begin
DROP FUNCTION IF EXISTS reptracker_endpoints.get_reptracker_version;
CREATE OR REPLACE FUNCTION reptracker_endpoints.get_reptracker_version()
RETURNS TEXT
-- openapi-generated-code-end
LANGUAGE 'plpgsql' STABLE
AS
$$
BEGIN
--100000s because version of hafbe doesn't change as often, but it may change
PERFORM set_config('response.headers', '[{"Cache-Control": "public, max-age=100000"}]', true);
RETURN git_hash FROM version;
END
$$;
RESET ROLE;
rewrite ^/last-synced-block /rpc/get_rep_last_synced_block break;
# endpoint for get /last-synced-block
rewrite ^/version /rpc/get_reptracker_version break;
# endpoint for get /version
rewrite ^/accounts/([^/]+)/reputation /rpc/get_account_reputation?account-name=$1 break;
# endpoint for get /accounts/{account-name}/reputation
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment