solana-accountsdb-connector/connector-mango/scripts/create_views.sql

79 lines
2.9 KiB
MySQL
Raw Normal View History

2021-11-04 02:00:29 -07:00
-- Views for raw accounts
CREATE VIEW account_rooted AS
SELECT
2021-11-08 04:13:06 -08:00
DISTINCT ON(pubkey_id)
pubkey, account_write.*
2021-11-04 02:00:29 -07:00
FROM account_write
INNER JOIN slot USING(slot)
2021-11-08 04:13:06 -08:00
INNER JOIN pubkey USING(pubkey_id)
2021-11-08 03:39:56 -08:00
WHERE slot.status = 'Rooted'
2021-11-08 04:13:06 -08:00
ORDER BY pubkey_id, slot DESC, write_version DESC;
2021-11-08 03:39:56 -08:00
CREATE VIEW account_confirmed AS
2021-11-04 02:00:29 -07:00
SELECT
2021-11-08 04:13:06 -08:00
DISTINCT ON(pubkey_id)
pubkey, account_write.*
2021-11-04 02:00:29 -07:00
FROM account_write
INNER JOIN slot USING(slot)
2021-11-08 04:13:06 -08:00
INNER JOIN pubkey USING(pubkey_id)
2021-11-08 03:39:56 -08:00
WHERE (slot.status = 'Confirmed' AND NOT slot.uncle) OR slot.status = 'Rooted'
2021-11-08 04:13:06 -08:00
ORDER BY pubkey_id, slot DESC, write_version DESC;
2021-11-04 02:00:29 -07:00
CREATE VIEW account_processed AS
SELECT
2021-11-08 04:13:06 -08:00
DISTINCT ON(pubkey_id)
pubkey, account_write.*
2021-11-04 02:00:29 -07:00
FROM account_write
INNER JOIN slot USING(slot)
2021-11-08 04:13:06 -08:00
INNER JOIN pubkey USING(pubkey_id)
2021-11-08 03:39:56 -08:00
WHERE ((slot.status = 'Confirmed' OR slot.status = 'Processed') AND NOT slot.uncle) OR slot.status = 'Rooted'
2021-11-08 04:13:06 -08:00
ORDER BY pubkey_id, slot DESC, write_version DESC;
2021-11-04 02:00:29 -07:00
CREATE VIEW mango_account_rooted AS
SELECT
2021-11-08 04:13:06 -08:00
DISTINCT ON(pubkey_id)
pubkey, mango_account_write.*
2021-11-04 02:00:29 -07:00
FROM mango_account_write
INNER JOIN slot USING(slot)
2021-11-08 04:13:06 -08:00
INNER JOIN pubkey using(pubkey_id)
2021-11-08 03:39:56 -08:00
WHERE slot.status = 'Rooted'
2021-11-08 04:13:06 -08:00
ORDER BY pubkey_id, slot DESC, write_version DESC;
2021-11-08 03:39:56 -08:00
CREATE VIEW mango_account_confirmed AS
2021-11-04 02:00:29 -07:00
SELECT
2021-11-08 04:13:06 -08:00
DISTINCT ON(pubkey_id)
pubkey, mango_account_write.*
2021-11-04 02:00:29 -07:00
FROM mango_account_write
INNER JOIN slot USING(slot)
2021-11-08 04:13:06 -08:00
INNER JOIN pubkey using(pubkey_id)
2021-11-08 03:39:56 -08:00
WHERE (slot.status = 'Confirmed' AND NOT slot.uncle) OR slot.status = 'Rooted'
2021-11-08 04:13:06 -08:00
ORDER BY pubkey_id, slot DESC, write_version DESC;
2021-11-04 02:00:29 -07:00
CREATE VIEW mango_account_processed AS
SELECT
2021-11-08 04:13:06 -08:00
DISTINCT ON(pubkey_id)
pubkey, mango_account_write.*
2021-11-04 02:00:29 -07:00
FROM mango_account_write
INNER JOIN slot USING(slot)
2021-11-08 04:13:06 -08:00
INNER JOIN pubkey using(pubkey_id)
2021-11-08 03:39:56 -08:00
WHERE ((slot.status = 'Confirmed' OR slot.status = 'Processed') AND NOT slot.uncle) OR slot.status = 'Rooted'
2021-11-08 04:13:06 -08:00
ORDER BY pubkey_id, slot DESC, write_version DESC;
2021-11-04 02:00:29 -07:00
CREATE VIEW mango_account_processed_balance AS
SELECT
pubkey,
unnest(array['MNGO', 'BTC', 'ETH', 'SOL', 'USDT', 'SRM', 'RAY', 'COPE', 'FTT', 'ADA', 'unused10', 'unused11', 'unused12', 'unused13', 'unused14', 'USDC']) as token,
unnest(deposits) as deposit,
unnest(borrows) as borrow
FROM mango_account_processed;
CREATE VIEW mango_account_processed_perp AS
SELECT
pubkey,
perp,
(q.perp_account).*
FROM (
SELECT
pubkey,
unnest(array['MNGO', 'BTC', 'ETH', 'SOL', 'unused_USDT', 'SRM', 'RAY', 'unused_COPE', 'FTT', 'ADA', 'unused10', 'unused11', 'unused12', 'unused13', 'unused14']) as perp,
unnest(perp_accounts) as perp_account
FROM mango_account_processed
) q;