diff --git a/db/btracker_app.sql b/db/btracker_app.sql index cfb177b0ac38702aaae4fb8c10562bf2a50a8648..b5fb42cfcad6a63e1a7a2a61610eb189a06f050e 100644 --- a/db/btracker_app.sql +++ b/db/btracker_app.sql @@ -40,6 +40,11 @@ VALUES (True, False) ; +CREATE TABLE IF NOT EXISTS version( + git_hash TEXT +); + +INSERT INTO version VALUES('unspecified (generate and apply set_version_in_sql.pgsql)'); --ACCOUNT BALANCES CREATE TABLE IF NOT EXISTS current_account_balances diff --git a/endpoints/endpoint_schema.sql b/endpoints/endpoint_schema.sql index ca391ef5b3734fcbe66f84088095b7cc2d79990e..2a2687bfe19fd4463eaec66abfdc518a9c270608 100644 --- a/endpoints/endpoint_schema.sql +++ b/endpoints/endpoint_schema.sql @@ -17,7 +17,8 @@ externalDocs: tags: - name: Accounts description: Informations about account balances - + - name: Other + description: General API information servers: - url: /balance-api */ @@ -58,6 +59,10 @@ declare { "name": "Accounts", "description": "Informations about account balances" + }, + { + "name": "Other", + "description": "General API information" } ], "servers": [ @@ -213,7 +218,7 @@ declare } } }, - "btracker_backend.balance_history_type": { + "btracker_backend.balance_history": { "type": "object", "properties": { "block_num": { @@ -261,7 +266,7 @@ declare "operations_result": { "type": "array", "items": { - "$ref": "#/components/schemas/btracker_backend.balance_history_type" + "$ref": "#/components/schemas/btracker_backend.balance_history" }, "description": "List of operation results" } @@ -648,6 +653,58 @@ declare } } } + }, + "/version": { + "get": { + "tags": [ + "Other" + ], + "summary": "Get Balance tracker''s version", + "description": "Get Balance tracker''s last commit hash (versions set by by hash value).\n\nSQL example\n* `SELECT * FROM btracker_endpoints.get_btracker_version();`\n\nREST call example\n* `GET ''https://%1$s/balance-api/version''`\n", + "operationId": "btracker_endpoints.get_btracker_version", + "responses": { + "200": { + "description": "Balance 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": [ + "Other" + ], + "summary": "Get last block number synced by balance tracker", + "description": "Get the block number of the last block synced by balance tracker.\n\nSQL example\n* `SELECT * FROM btracker_endpoints.get_btracker_last_synced_block();`\n\nREST call example\n* `GET ''https://%1$s/balance-api/last-synced-block''`\n", + "operationId": "btracker_endpoints.get_btracker_last_synced_block", + "responses": { + "200": { + "description": "Last synced block by balance tracker\n\n* Returns `INT`\n", + "content": { + "application/json": { + "schema": { + "type": "integer" + }, + "example": 5000000 + } + } + }, + "404": { + "description": "No blocks synced" + } + } + } } } } diff --git a/rewrite_rules.conf b/rewrite_rules.conf index 26577451bf5ee07d1126b8a4bc51915c6e4b7582..82b3b03314c89a8aa818a62964b879f85eed15a5 100644 --- a/rewrite_rules.conf +++ b/rewrite_rules.conf @@ -1,3 +1,9 @@ +rewrite ^/last-synced-block /rpc/get_btracker_last_synced_block break; +# endpoint for get /last-synced-block + +rewrite ^/version /rpc/get_btracker_version break; +# endpoint for get /version + rewrite ^/accounts/([^/]+)/delegations /rpc/get_balance_delegations?account-name=$1 break; # endpoint for get /accounts/{account-name}/delegations diff --git a/scripts/install_app.sh b/scripts/install_app.sh index ad9eb8a643890ea8f13bca3fb5572de37f3a3400..69bb4fb8a93ee67d3af76494445d7ba3e15634e4 100755 --- a/scripts/install_app.sh +++ b/scripts/install_app.sh @@ -1,4 +1,4 @@ -#! /bin/sh -e +#! /bin/bash -e SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1; pwd -P )" @@ -99,10 +99,13 @@ psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_S psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/../endpoints/account-balances/get_account_balances.sql" psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/../endpoints/account-balances/get_history_aggregation.sql" psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/../endpoints/account-balances/get_account_delegations.sql" +psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/../endpoints/other/get_btracker_last_synced_block.sql" +psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/../endpoints/other/get_btracker_version.sql" psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/../dump_accounts/account_dump_schema.sql" psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/../dump_accounts/account_stats_btracker.sql" psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/../dump_accounts/compare_accounts.sql" +psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET SEARCH_PATH TO ${BTRACKER_SCHEMA};" -f "$SCRIPTPATH/set_version_in_sql.pgsql" psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET ROLE btracker_owner;GRANT USAGE ON SCHEMA ${BTRACKER_SCHEMA} to btracker_user;" psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET ROLE btracker_owner;GRANT USAGE ON SCHEMA btracker_endpoints to btracker_user;" psql "$POSTGRES_ACCESS" -v ON_ERROR_STOP=on -c "SET ROLE btracker_owner;GRANT USAGE ON SCHEMA btracker_backend to btracker_user;" diff --git a/scripts/openapi_rewrite.sh b/scripts/openapi_rewrite.sh index 8066b02388afb4ffff0635c1bb033b27674f1ed6..e99f371a9ef96d1e1545bdf6738f14bbff9621ce 100755 --- a/scripts/openapi_rewrite.sh +++ b/scripts/openapi_rewrite.sh @@ -23,7 +23,10 @@ ENDPOINTS_IN_ORDER=" ../$endpoints/account-balances/get_account_balances.sql ../$endpoints/account-balances/get_balance_history.sql ../$endpoints/account-balances/get_history_aggregation.sql -../$endpoints/account-balances/get_account_delegations.sql" +../$endpoints/account-balances/get_account_delegations.sql +../$endpoints/other/get_btracker_version.sql +../$endpoints/other/get_btracker_last_synced_block.sql" + # Function to reverse the lines reverse_lines() {