feat(sol): align canary ingestor and api auth
All checks were successful
deploy-trade-r001-canary / apply (push) Successful in 6m14s
All checks were successful
deploy-trade-r001-canary / apply (push) Successful in 6m14s
This commit is contained in:
@@ -101,10 +101,22 @@ async function graphqlRequest(cfg, query, variables) {
|
||||
async function fetchStats(cfg) {
|
||||
const query = `
|
||||
query DlobStatsLatest($markets: [String!]!) {
|
||||
dlob_stats_latest(where: { market_name: { _in: $markets } }) {
|
||||
dlob_hot_derived_latest(where: { market_name: { _in: $markets }, is_indicative: { _eq: false } }) {
|
||||
market_name
|
||||
market_index
|
||||
ts
|
||||
ts_ms
|
||||
slot
|
||||
oracle_price
|
||||
mark_price
|
||||
mid_price
|
||||
best_bid_price
|
||||
best_ask_price
|
||||
updated_at
|
||||
}
|
||||
dlob_all_derived_latest(where: { market_name: { _in: $markets }, is_indicative: { _eq: false } }) {
|
||||
market_name
|
||||
market_index
|
||||
ts_ms
|
||||
slot
|
||||
oracle_price
|
||||
mark_price
|
||||
@@ -117,7 +129,21 @@ async function fetchStats(cfg) {
|
||||
`;
|
||||
|
||||
const data = await graphqlRequest(cfg, query, { markets: cfg.markets });
|
||||
return Array.isArray(data?.dlob_stats_latest) ? data.dlob_stats_latest : [];
|
||||
const merged = new Map();
|
||||
|
||||
for (const row of Array.isArray(data?.dlob_all_derived_latest) ? data.dlob_all_derived_latest : []) {
|
||||
const marketName = String(row?.market_name || '').trim();
|
||||
if (!marketName) continue;
|
||||
merged.set(marketName, { ...row, __from: 'dlob_all_derived_latest' });
|
||||
}
|
||||
|
||||
for (const row of Array.isArray(data?.dlob_hot_derived_latest) ? data.dlob_hot_derived_latest : []) {
|
||||
const marketName = String(row?.market_name || '').trim();
|
||||
if (!marketName) continue;
|
||||
merged.set(marketName, { ...row, __from: 'dlob_hot_derived_latest' });
|
||||
}
|
||||
|
||||
return Array.from(merged.values());
|
||||
}
|
||||
|
||||
async function insertTicks(cfg, objects) {
|
||||
@@ -168,7 +194,7 @@ async function main() {
|
||||
if (updatedAt) lastUpdatedAtByMarket.set(marketName, updatedAt);
|
||||
|
||||
const marketIndex = toIntOrNull(r?.market_index) ?? 0;
|
||||
const dlobIso = isoFromEpochMs(r?.ts);
|
||||
const dlobIso = isoFromEpochMs(r?.ts_ms);
|
||||
const tsIso = dlobIso || nowIso;
|
||||
|
||||
const oraclePrice = numStr(r?.oracle_price) || numStr(r?.mark_price) || numStr(r?.mid_price);
|
||||
@@ -184,11 +210,11 @@ async function main() {
|
||||
oracle_slot: r?.slot == null ? null : String(r.slot),
|
||||
source: cfg.source,
|
||||
raw: {
|
||||
from: 'dlob_stats_latest',
|
||||
from: r?.__from || 'dlob_all_derived_latest',
|
||||
market_name: marketName,
|
||||
market_index: marketIndex,
|
||||
dlob: {
|
||||
ts: r?.ts ?? null,
|
||||
ts_ms: r?.ts_ms ?? null,
|
||||
slot: r?.slot ?? null,
|
||||
best_bid_price: r?.best_bid_price ?? null,
|
||||
best_ask_price: r?.best_ask_price ?? null,
|
||||
|
||||
Reference in New Issue
Block a user