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

Add prev_balance to history aggregation endpoint

parent 3ab5ca75
No related branches found
No related tags found
2 merge requests!168Update return types: VEST balances should be returned as strings to address JSON limitations,!160Add daily and monthly aggregations for balances
......@@ -6,6 +6,7 @@ DROP TYPE IF EXISTS balance_history_aggregation CASCADE;
CREATE TYPE balance_history_aggregation AS (
date TIMESTAMP,
balance BIGINT,
prev_balance BIGINT,
min_balance BIGINT,
max_balance BIGINT
);
......@@ -85,6 +86,7 @@ BEGIN
SELECT
fb.date,
fb.balance,
fb.prev_balance,
fb.min_balance,
fb.max_balance
FROM get_balance_history_by_day(
......@@ -100,6 +102,7 @@ BEGIN
SELECT
fb.date,
fb.balance,
fb.prev_balance,
fb.min_balance,
fb.max_balance
FROM get_balance_history_by_month(
......@@ -115,6 +118,7 @@ BEGIN
SELECT
fb.date,
fb.balance,
fb.prev_balance,
fb.min_balance,
fb.max_balance
FROM get_balance_history_by_year(
......@@ -178,6 +182,7 @@ RETURN QUERY (
ds.date,
ds.row_num,
COALESCE(ds.balance, prev_balance.balance, 0) AS balance,
COALESCE(prev_balance.balance, 0) AS prev_balance,
COALESCE(ds.min_balance, prev_balance.min_balance, 0) AS min_balance,
COALESCE(ds.max_balance, prev_balance.max_balance, 0) AS max_balance,
COALESCE(ds.source_op_block, prev_balance.source_op_block, NULL) AS source_op_block
......@@ -204,6 +209,7 @@ RETURN QUERY (
next_b.date,
next_b.row_num,
COALESCE(next_b.balance, prev_b.balance, 0) AS balance,
COALESCE(prev_b.balance, 0) AS prev_balance,
COALESCE(next_b.min_balance, prev_b.min_balance, 0) AS min_balance,
COALESCE(next_b.max_balance, prev_b.max_balance, 0) AS max_balance,
COALESCE(next_b.source_op_block, prev_b.source_op_block, NULL) AS source_op_block
......@@ -215,6 +221,7 @@ RETURN QUERY (
SELECT
LEAST(fb.date + INTERVAL '1 day' - INTERVAL '1 second', CURRENT_TIMESTAMP)::TIMESTAMP AS adjusted_date,
fb.balance,
fb.prev_balance,
fb.min_balance,
fb.max_balance
FROM filled_balances fb
......@@ -271,6 +278,7 @@ RETURN QUERY (
ds.date,
ds.row_num,
COALESCE(ds.balance, prev_balance.balance, 0) AS balance,
COALESCE(prev_balance.balance, 0) AS prev_balance,
COALESCE(ds.min_balance, prev_balance.min_balance, 0) AS min_balance,
COALESCE(ds.max_balance, prev_balance.max_balance, 0) AS max_balance,
COALESCE(ds.source_op_block, prev_balance.source_op_block, NULL) AS source_op_block
......@@ -297,6 +305,7 @@ RETURN QUERY (
next_b.date,
next_b.row_num,
COALESCE(next_b.balance, prev_b.balance, 0) AS balance,
COALESCE(prev_b.balance, 0) AS prev_balance,
COALESCE(next_b.min_balance, prev_b.min_balance, 0) AS min_balance,
COALESCE(next_b.max_balance, prev_b.max_balance, 0) AS max_balance,
COALESCE(next_b.source_op_block, prev_b.source_op_block, NULL) AS source_op_block
......@@ -308,6 +317,7 @@ RETURN QUERY (
SELECT
LEAST(fb.date + INTERVAL '1 month' - INTERVAL '1 second', CURRENT_TIMESTAMP)::TIMESTAMP AS adjusted_date,
fb.balance,
fb.prev_balance,
fb.min_balance,
fb.max_balance
FROM filled_balances fb
......@@ -364,6 +374,7 @@ RETURN QUERY (
ds.date,
ds.row_num,
COALESCE(ds.balance, prev_balance.balance, 0) AS balance,
COALESCE(prev_balance.balance, 0) AS prev_balance,
COALESCE(ds.min_balance, prev_balance.min_balance, 0) AS min_balance,
COALESCE(ds.max_balance, prev_balance.max_balance, 0) AS max_balance,
COALESCE(ds.source_op_block, prev_balance.source_op_block, NULL) AS source_op_block
......@@ -390,6 +401,7 @@ RETURN QUERY (
next_b.date,
next_b.row_num,
COALESCE(next_b.balance, prev_b.balance, 0) AS balance,
COALESCE(prev_b.balance, 0) AS prev_balance,
COALESCE(next_b.min_balance, prev_b.min_balance, 0) AS min_balance,
COALESCE(next_b.max_balance, prev_b.max_balance, 0) AS max_balance,
COALESCE(next_b.source_op_block, prev_b.source_op_block, NULL) AS source_op_block
......@@ -401,6 +413,7 @@ RETURN QUERY (
SELECT
LEAST(fb.date + INTERVAL '1 year' - INTERVAL '1 second', CURRENT_TIMESTAMP)::TIMESTAMP AS adjusted_date,
fb.balance,
fb.prev_balance,
fb.min_balance,
fb.max_balance
FROM filled_balances fb
......
......@@ -151,7 +151,7 @@ insert_account_balance_history AS (
FROM remove_latest_stored_balance_record pbh
RETURNING (xmax = 0) as is_new_entry, acc_history.account
),
join_created_at_to_balance_history AS MATERIALIZED (
join_created_at_to_balance_history AS (
SELECT
rls.account_id,
rls.nai,
......@@ -163,7 +163,7 @@ join_created_at_to_balance_history AS MATERIALIZED (
FROM remove_latest_stored_balance_record rls
JOIN hive.blocks_view bv ON bv.num = rls.source_op_block
),
get_latest_updates AS MATERIALIZED (
get_latest_updates AS (
SELECT
account_id,
nai,
......
......@@ -5,7 +5,7 @@ SET ROLE btracker_owner;
get:
tags:
- Accounts
summary: Historical balance change
summary: Account delegations
description: |
History of change of `coin-type` balance in given block range
......
......@@ -5,7 +5,7 @@ SET ROLE btracker_owner;
get:
tags:
- Accounts
summary: Historical balance change
summary: Aggregated account balance history
description: |
History of change of `coin-type` balance in given block range
......@@ -107,6 +107,7 @@ SET ROLE btracker_owner;
example:
- {
"date":"2016-12-31T23:59:59",
"prev_balance":"0",
"balance":"8172549681941451",
"min_balance":"1000000000000",
"max_balance":"8436182707535769"
......@@ -147,6 +148,7 @@ BEGIN
SELECT to_json(array_agg(row)) FROM (
SELECT
fb.date,
fb.prev_balance::TEXT,
fb.balance::TEXT,
fb.min_balance::TEXT,
fb.max_balance::TEXT
......
......@@ -377,7 +377,7 @@ declare
"tags": [
"Accounts"
],
"summary": "Historical balance change",
"summary": "Aggregated account balance history",
"description": "History of change of `coin-type` balance in given block range\n\nSQL example\n* `SELECT * FROM btracker_endpoints.get_balance_aggregation(''blocktrades'', ''VESTS'');`\n\nREST call example\n* `GET ''https://%1$s/balance-api/accounts/blocktrades/aggregated-history?coin-type=VESTS''`\n",
"operationId": "btracker_endpoints.get_balance_aggregation",
"parameters": [
......@@ -452,6 +452,7 @@ declare
"example": [
{
"date": "2016-12-31T23:59:59",
"prev_balance": "0",
"balance": "8172549681941451",
"min_balance": "1000000000000",
"max_balance": "8436182707535769"
......@@ -471,7 +472,7 @@ declare
"tags": [
"Accounts"
],
"summary": "Historical balance change",
"summary": "Account delegations",
"description": "History of change of `coin-type` balance in given block range\n\nSQL example\n* `SELECT * FROM btracker_endpoints.get_balance_delegations(''blocktrades'');`\n\nREST call example\n* `GET ''https://%1$s/balance-api/accounts/blocktrades/delegations''`\n",
"operationId": "btracker_endpoints.get_balance_delegations",
"parameters": [
......
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