feat(hasura): expose canonical dlob projections

This commit is contained in:
mpabi
2026-03-13 23:42:18 +01:00
parent 01f6543ae9
commit 71b00f80bb

View File

@@ -96,7 +96,11 @@ async function main() {
const baseTicks = { schema: 'public', name: 'drift_ticks' };
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 dlobStatsLatestProjectionView = { schema: 'public', name: 'dlob_stats_latest_projection' };
const dlobDepthBpsLatestTable = { schema: 'public', name: 'dlob_depth_bps_latest' };
const dlobSlippageLatestTable = { schema: 'public', name: 'dlob_slippage_latest' };
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' } });
}
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 } };
await ensureDlobTable(dlobL2LatestTable, [
await metadataIgnore({ type: 'pg_untrack_table', args: { source, table: dlobL2LatestTable, cascade: true } });
await ensureProjectedPublicSelectTable(dlobL2LatestProjectionView, [
'source',
'market_name',
'market_type',
@@ -278,9 +309,10 @@ async function main() {
'asks',
'raw',
'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',
'market_name',
'market_type',
@@ -302,6 +334,31 @@ async function main() {
'imbalance',
'raw',
'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 });
await ensurePublicSelectTable(dlobDepthBpsLatestTable, [