2022-11-14 16:08:57 +00:00
|
|
|
{% macro get_blockchain_api() %}
|
|
|
|
|
{% set query %}
|
2024-11-17 12:51:51 +00:00
|
|
|
CREATE schema if NOT EXISTS {{ target.database }}.bronze_api;
|
2022-11-14 16:08:57 +00:00
|
|
|
{% endset %}
|
|
|
|
|
{% do run_query(query) %}
|
|
|
|
|
{% set query %}
|
2024-11-17 12:51:51 +00:00
|
|
|
CREATE TABLE if NOT EXISTS {{ target.database }}.bronze_api.blockchain(
|
2022-11-14 16:08:57 +00:00
|
|
|
call ARRAY,
|
|
|
|
|
DATA variant,
|
|
|
|
|
_inserted_timestamp timestamp_ntz
|
|
|
|
|
);
|
|
|
|
|
{% endset %}
|
|
|
|
|
{% do run_query(query) %}
|
|
|
|
|
{% set query %}
|
|
|
|
|
INSERT INTO
|
2024-11-17 12:51:51 +00:00
|
|
|
{{ target.database }}.bronze_api.blockchain(
|
2022-11-14 16:08:57 +00:00
|
|
|
call,
|
|
|
|
|
DATA,
|
|
|
|
|
_inserted_timestamp
|
|
|
|
|
) WITH base AS (
|
|
|
|
|
SELECT
|
|
|
|
|
*
|
|
|
|
|
FROM
|
|
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
*,
|
|
|
|
|
conditional_true_event(
|
|
|
|
|
CASE
|
|
|
|
|
WHEN rn_mod_out = 1 THEN TRUE
|
|
|
|
|
ELSE FALSE
|
|
|
|
|
END
|
|
|
|
|
) over (
|
|
|
|
|
ORDER BY
|
2024-11-17 12:51:51 +00:00
|
|
|
min_block DESC
|
2022-11-14 16:08:57 +00:00
|
|
|
) groupID_out
|
|
|
|
|
FROM
|
|
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
*,
|
|
|
|
|
MOD(ROW_NUMBER() over(
|
|
|
|
|
ORDER BY
|
2024-07-29 13:45:06 +00:00
|
|
|
min_block), 1) rn_mod_out
|
2022-11-14 16:08:57 +00:00
|
|
|
FROM
|
|
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
MIN(block_id) min_block,
|
|
|
|
|
MAX(block_id) max_block,
|
|
|
|
|
ARRAY_AGG(block_id) blocks
|
|
|
|
|
FROM
|
|
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
conditional_true_event(
|
|
|
|
|
CASE
|
|
|
|
|
WHEN rn_mod = 1 THEN TRUE
|
|
|
|
|
ELSE FALSE
|
|
|
|
|
END
|
|
|
|
|
) over (
|
|
|
|
|
ORDER BY
|
|
|
|
|
block_ID
|
|
|
|
|
) groupID,
|
|
|
|
|
block_id
|
|
|
|
|
FROM
|
|
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
block_Id :: STRING block_Id,
|
|
|
|
|
MOD(ROW_NUMBER() over(
|
|
|
|
|
ORDER BY
|
|
|
|
|
block_id), 20) rn_mod
|
|
|
|
|
FROM
|
|
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
DISTINCT block_id
|
|
|
|
|
FROM
|
2024-11-17 12:51:51 +00:00
|
|
|
{{ target.database }}.silver.blocks
|
2022-11-14 16:08:57 +00:00
|
|
|
EXCEPT
|
|
|
|
|
SELECT
|
|
|
|
|
block_id
|
|
|
|
|
FROM
|
2024-11-17 12:51:51 +00:00
|
|
|
{{ target.database }}.silver.blockchain
|
2022-11-14 16:08:57 +00:00
|
|
|
)
|
|
|
|
|
ORDER BY
|
2024-11-17 12:51:51 +00:00
|
|
|
block_id DESC
|
2022-11-14 16:08:57 +00:00
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
GROUP BY
|
|
|
|
|
groupID
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
WHERE
|
|
|
|
|
groupID_out < 11
|
|
|
|
|
),
|
|
|
|
|
calls AS (
|
|
|
|
|
SELECT
|
2024-07-29 13:45:06 +00:00
|
|
|
min_block,
|
2022-11-14 16:08:57 +00:00
|
|
|
ARRAY_AGG(
|
|
|
|
|
{ 'jsonrpc': '2.0',
|
|
|
|
|
'id': min_block :: INT,
|
|
|
|
|
'method': 'blockchain',
|
|
|
|
|
'params': [min_block::STRING,max_block::STRING] }
|
|
|
|
|
) call
|
|
|
|
|
FROM
|
|
|
|
|
base
|
|
|
|
|
GROUP BY
|
2024-07-29 13:45:06 +00:00
|
|
|
min_block
|
|
|
|
|
LIMIT
|
2024-11-12 16:28:06 +00:00
|
|
|
50
|
2022-11-14 16:08:57 +00:00
|
|
|
)
|
|
|
|
|
SELECT
|
|
|
|
|
call,
|
2024-03-05 16:20:17 +00:00
|
|
|
{{ target.database }}.live.udf_api (
|
|
|
|
|
'POST',
|
2024-11-12 16:07:57 +00:00
|
|
|
'{Service}/{Authentication}',
|
2024-03-05 16:20:17 +00:00
|
|
|
OBJECT_CONSTRUCT(
|
|
|
|
|
'Content-Type',
|
|
|
|
|
'application/json'
|
|
|
|
|
),
|
|
|
|
|
call,
|
2024-11-12 16:07:57 +00:00
|
|
|
'Vault/prod/osmosis/quicknode/mainnet_new'
|
2022-11-14 16:08:57 +00:00
|
|
|
) AS DATA,
|
|
|
|
|
SYSDATE()
|
|
|
|
|
FROM
|
|
|
|
|
calls;
|
|
|
|
|
{% endset %}
|
|
|
|
|
{% do run_query(query) %}
|
|
|
|
|
{% endmacro %}
|