Skip to content
Snippets Groups Projects
Commit 0fcd7af0 authored by poka's avatar poka
Browse files

add udHistory by identity, hasura style

parent a036c9f1
No related branches found
No related tags found
2 merge requests!16Hasura as GraphQL engine,!14Draft: Hasura as GraphQL engine
DB_NAME=squid
DB_PASSWORD=postgres
DB_DEV_PORT=5432
GQL_PORT=4350
GENESIS_FILE="gdev.json" # "test.json"
HISTORY_FILE="history.json" # "history_empty.json"
HASURA_GRAPHQL_ADMIN_SECRET=my_hasura_password
......
......@@ -65,3 +65,10 @@ array_relationships:
table:
name: ud_history
schema: public
computed_fields:
- name: ud_history
definition:
function:
name: get_ud_history
schema: public
comment: Get history of universal dividend created by this identity
[]
SET check_function_bodies = false;
CREATE TABLE public.identity (
id character varying NOT NULL,
index integer NOT NULL,
name text NOT NULL,
status character varying(11) NOT NULL,
created_on integer NOT NULL,
last_change_on integer NOT NULL,
smith_status character varying(8),
is_member boolean NOT NULL,
expire_on integer NOT NULL,
account_id character varying,
created_in_id character varying
);
CREATE TABLE public.ud_history (
id character varying NOT NULL,
amount integer NOT NULL,
block_number integer NOT NULL,
"timestamp" timestamp with time zone NOT NULL,
identity_id character varying
);
CREATE FUNCTION public.get_ud_history(identity_row public.identity) RETURNS SETOF public.ud_history
LANGUAGE plpgsql STABLE
AS $$
BEGIN
RETURN QUERY
SELECT
CAST('ud-' || identity_row.name || '-' || ud.block_number || '-' || ud.event_id AS character varying) AS id,
ud.amount,
ud.block_number,
b.timestamp,
identity_row.id AS identity_id
FROM
public.universal_dividend ud
JOIN public.block b ON ud.block_number = b.height
WHERE
EXISTS (
SELECT 1
FROM (
SELECT
me1.block_number as creation_block,
COALESCE(
(
SELECT me2.block_number
FROM public.membership_event me2
WHERE me2.identity_id = me1.identity_id
AND me2.event_type = 'REMOVAL'
AND me2.block_number > me1.block_number
ORDER BY me2.block_number
LIMIT 1
),
(SELECT MAX(block_number) FROM public.universal_dividend)
) as removal_block
FROM public.membership_event me1
WHERE me1.identity_id = identity_row.id
AND me1.event_type = 'CREATION'
) as membership_periods
WHERE ud.block_number >= membership_periods.creation_block
AND ud.block_number <= membership_periods.removal_block
);
END;
$$;
CREATE TABLE public.account (
id character varying NOT NULL,
linked_identity_id character varying
......@@ -80,19 +141,6 @@ CREATE TABLE public.extrinsic (
block_id character varying,
call_id character varying
);
CREATE TABLE public.identity (
id character varying NOT NULL,
index integer NOT NULL,
name text NOT NULL,
status character varying(11) NOT NULL,
created_on integer NOT NULL,
last_change_on integer NOT NULL,
smith_status character varying(8),
is_member boolean NOT NULL,
expire_on integer NOT NULL,
account_id character varying,
created_in_id character varying
);
CREATE TABLE public.items_counter (
id character varying NOT NULL,
type character varying(10) NOT NULL,
......@@ -134,13 +182,6 @@ CREATE TABLE public.transfer (
from_id character varying,
to_id character varying
);
CREATE TABLE public.ud_history (
id character varying NOT NULL,
amount integer NOT NULL,
block_number integer NOT NULL,
"timestamp" timestamp with time zone NOT NULL,
identity_id character varying
);
CREATE TABLE public.ud_reeval (
id character varying NOT NULL,
block_number integer NOT NULL,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment