select * from users;

select * from resource;

select * from resource_account;

select * from bank_account;

select * from resource_account
join users on resource_account.user_id = users.id
join resource on resource.id = resource_account.resource_id
where users.name = 'Harry';

select * from bank_account where user_id = 'c40ef029-9c31-4bf8-8bb4-d6f63caeb351';

delete from users where id = 'c40ef029-9c31-4bf8-8bb4-d6f63caeb351';

select * from get_accounts( 'c40ef029-9c31-4bf8-8bb4-d6f63caeb351');

update bank_account set balance = 1200 from users where bank_account.user_id = users.id AND name = 'Joe';

select * from inventory_item;

select * from upgrade_event;

delete from upgrade_event;

update inventory_item set tier = 0;

select * from staking_event;

update staking_event set created_at = '2023-03-30 05:05:39.696926+00';

select * from claim_event;

delete from claim_event;



-- Grab a user's bank account plus their resource accounts
EXPLAIN ANALYZE
SELECT
  bank_account.id as bank_account_id,
  bank_account.balance as primary_balance,
  json_agg(json_build_object('resourceType', resource.name, 'balance', resource_account.balance)) as resource_accounts
FROM bank_account
JOIN resource_account ON bank_account.user_id = resource_account.user_id
JOIN resource ON resource.id = resource_account.resource_id
JOIN users ON bank_account.user_id = users.id
WHERE users.name = 'Joe'
GROUP BY bank_account.id;


-- Grab a user's bank account plus their resource accounts
EXPLAIN ANALYZE
SELECT
  bank_account.id as bank_account_id,
  bank_account.balance as primary_balance,
  resname as resourceType,
  resource_account.balance,
  resource_account.id as resId
FROM bank_account
JOIN resource_account ON 1 = resource_account.user_id
WHERE bank_account.user_id = 1;

-- Grab a staking source with all its resource wells and active stakes
SELECT
 staking_source.id as id, name, description,
 json_agg(
   json_build_object(
     'id', resource_well.id, 'resouceType', resource_well.resname, 'supply', supply )) as "resourceWells",
 json_agg(
   json_build_object(
     'id', staking_event.id, 'resouceType', resource_well.resname, 'startTime', staking_event.created_at)) as "activeStakes"
FROM staking_source
INNER JOIN resource_well ON resource_well.source_id = staking_source.id
INNER JOIN staking_event ON staking_event.well_id = resource_well.id
WHERE staking_source.user_id = 1
GROUP BY staking_source.id;

SELECT
  inventory_item.id AS inv_id,
  staking_event.id AS stake_id,
  staking_event.created_at AS stake_created_at
FROM inventory_item
LEFT JOIN staking_event ON inventory_item_id = inventory_item.id
WHERE inventory_item.id = 1 AND inventory_item.user_id = 1
ORDER BY stake_created_at DESC
LIMIT 1;
