feat(hasura): expose canonical dlob projections
This commit is contained in:
@@ -96,7 +96,11 @@ async function main() {
|
|||||||
|
|
||||||
const baseTicks = { schema: 'public', name: 'drift_ticks' };
|
const baseTicks = { schema: 'public', name: 'drift_ticks' };
|
||||||
const dlobL2LatestTable = { schema: 'public', name: 'dlob_l2_latest' };
|
const dlobL2LatestTable = { schema: 'public', name: 'dlob_l2_latest' };
|
||||||
|
const dlobL2LatestProjectionView = { schema: 'public', name: 'dlob_l2_latest_projection' };
|
||||||
|
const dlobL3LatestProjectionView = { schema: 'public', name: 'dlob_l3_latest_projection' };
|
||||||
|
const dlobBestMakersLatestProjectionView = { schema: 'public', name: 'dlob_best_makers_latest_projection' };
|
||||||
const dlobStatsLatestTable = { schema: 'public', name: 'dlob_stats_latest' };
|
const dlobStatsLatestTable = { schema: 'public', name: 'dlob_stats_latest' };
|
||||||
|
const dlobStatsLatestProjectionView = { schema: 'public', name: 'dlob_stats_latest_projection' };
|
||||||
const dlobDepthBpsLatestTable = { schema: 'public', name: 'dlob_depth_bps_latest' };
|
const dlobDepthBpsLatestTable = { schema: 'public', name: 'dlob_depth_bps_latest' };
|
||||||
const dlobSlippageLatestTable = { schema: 'public', name: 'dlob_slippage_latest' };
|
const dlobSlippageLatestTable = { schema: 'public', name: 'dlob_slippage_latest' };
|
||||||
const dlobSlippageLatestV2Table = { schema: 'public', name: 'dlob_slippage_latest_v2' };
|
const dlobSlippageLatestV2Table = { schema: 'public', name: 'dlob_slippage_latest_v2' };
|
||||||
@@ -261,9 +265,36 @@ async function main() {
|
|||||||
await metadataIgnore({ type: 'pg_drop_update_permission', args: { source, table, role: 'ingestor' } });
|
await metadataIgnore({ type: 'pg_drop_update_permission', args: { source, table, role: 'ingestor' } });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function ensureProjectedPublicSelectTable(table, columns, { publicFilter, customName } = {}) {
|
||||||
|
await metadataIgnore({ type: 'pg_untrack_table', args: { source, table, cascade: true } });
|
||||||
|
const args = { source, table };
|
||||||
|
if (customName) {
|
||||||
|
args.configuration = { custom_name: customName };
|
||||||
|
}
|
||||||
|
await metadata({ type: 'pg_track_table', args });
|
||||||
|
|
||||||
|
await metadataIgnore({ type: 'pg_drop_select_permission', args: { source, table, role: 'public' } });
|
||||||
|
await metadata({
|
||||||
|
type: 'pg_create_select_permission',
|
||||||
|
args: {
|
||||||
|
source,
|
||||||
|
table,
|
||||||
|
role: 'public',
|
||||||
|
permission: {
|
||||||
|
columns,
|
||||||
|
filter: publicFilter || {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await metadataIgnore({ type: 'pg_drop_insert_permission', args: { source, table, role: 'ingestor' } });
|
||||||
|
await metadataIgnore({ type: 'pg_drop_update_permission', args: { source, table, role: 'ingestor' } });
|
||||||
|
}
|
||||||
|
|
||||||
const dlobPublicFilter = { source: { _eq: PUBLIC_DLOB_SOURCE_HEADER } };
|
const dlobPublicFilter = { source: { _eq: PUBLIC_DLOB_SOURCE_HEADER } };
|
||||||
|
|
||||||
await ensureDlobTable(dlobL2LatestTable, [
|
await metadataIgnore({ type: 'pg_untrack_table', args: { source, table: dlobL2LatestTable, cascade: true } });
|
||||||
|
await ensureProjectedPublicSelectTable(dlobL2LatestProjectionView, [
|
||||||
'source',
|
'source',
|
||||||
'market_name',
|
'market_name',
|
||||||
'market_type',
|
'market_type',
|
||||||
@@ -278,9 +309,10 @@ async function main() {
|
|||||||
'asks',
|
'asks',
|
||||||
'raw',
|
'raw',
|
||||||
'updated_at',
|
'updated_at',
|
||||||
], { publicFilter: dlobPublicFilter });
|
], { publicFilter: dlobPublicFilter, customName: 'dlob_l2_latest' });
|
||||||
|
|
||||||
await ensureDlobTable(dlobStatsLatestTable, [
|
await metadataIgnore({ type: 'pg_untrack_table', args: { source, table: dlobStatsLatestTable, cascade: true } });
|
||||||
|
await ensureProjectedPublicSelectTable(dlobStatsLatestProjectionView, [
|
||||||
'source',
|
'source',
|
||||||
'market_name',
|
'market_name',
|
||||||
'market_type',
|
'market_type',
|
||||||
@@ -302,6 +334,31 @@ async function main() {
|
|||||||
'imbalance',
|
'imbalance',
|
||||||
'raw',
|
'raw',
|
||||||
'updated_at',
|
'updated_at',
|
||||||
|
], { publicFilter: dlobPublicFilter, customName: 'dlob_stats_latest' });
|
||||||
|
|
||||||
|
await ensureProjectedPublicSelectTable(dlobL3LatestProjectionView, [
|
||||||
|
'source',
|
||||||
|
'market_name',
|
||||||
|
'market_type',
|
||||||
|
'market_index',
|
||||||
|
'ts',
|
||||||
|
'slot',
|
||||||
|
'bids',
|
||||||
|
'asks',
|
||||||
|
'raw',
|
||||||
|
'updated_at',
|
||||||
|
], { publicFilter: dlobPublicFilter });
|
||||||
|
|
||||||
|
await ensureProjectedPublicSelectTable(dlobBestMakersLatestProjectionView, [
|
||||||
|
'source',
|
||||||
|
'market_name',
|
||||||
|
'market_type',
|
||||||
|
'market_index',
|
||||||
|
'slot',
|
||||||
|
'bids',
|
||||||
|
'asks',
|
||||||
|
'raw',
|
||||||
|
'updated_at',
|
||||||
], { publicFilter: dlobPublicFilter });
|
], { publicFilter: dlobPublicFilter });
|
||||||
|
|
||||||
await ensurePublicSelectTable(dlobDepthBpsLatestTable, [
|
await ensurePublicSelectTable(dlobDepthBpsLatestTable, [
|
||||||
|
|||||||
Reference in New Issue
Block a user