Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 9 additions & 20 deletions src/routes/polymarket/markets.sql
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
WITH resolved_token AS (
SELECT condition_id
WITH token_condition_ids AS (
SELECT DISTINCT condition_id
FROM {db_scraper:Identifier}.polymarket_markets_by_asset_id
WHERE isNull({condition_id:Nullable(String)})
AND isNull({market_slug:Nullable(String)})
AND isNotNull({token_id:Nullable(String)})
AND asset_id = toUInt256({token_id:Nullable(String)})
LIMIT 1
WHERE notEmpty({token_id:Array(String)})
AND asset_id IN (SELECT toUInt256(arrayJoin({token_id:Array(String)})))
)
SELECT
m.condition_id,
Expand All @@ -26,19 +23,11 @@ SELECT
FROM {db_scraper:Identifier}.polymarket_markets m FINAL
LEFT JOIN {db_scraper:Identifier}.polymarket_events e FINAL
ON e.condition_id = m.condition_id
WHERE
CASE
WHEN isNotNull({condition_id:Nullable(String)})
THEN m.condition_id = {condition_id:Nullable(String)}
WHEN isNotNull({market_slug:Nullable(String)})
THEN m.market_slug = {market_slug:Nullable(String)}
WHEN isNotNull({token_id:Nullable(String)})
THEN m.condition_id = (SELECT condition_id FROM resolved_token)
WHEN isNotNull({event_slug:Nullable(String)})
THEN e.slug = {event_slug:Nullable(String)}
ELSE 1 = 1
END
AND (isNull({closed:Nullable(UInt8)}) OR m.closed = {closed:Nullable(UInt8)})
WHERE (empty({condition_id:Array(String)}) OR m.condition_id IN {condition_id:Array(String)})
AND (empty({market_slug:Array(String)}) OR m.market_slug IN {market_slug:Array(String)})
AND (empty({token_id:Array(String)}) OR m.condition_id IN (SELECT condition_id FROM token_condition_ids))
AND (empty({event_slug:Array(String)}) OR e.slug IN {event_slug:Array(String)})
AND (isNull({closed:Nullable(UInt8)}) OR m.closed = {closed:Nullable(UInt8)})
ORDER BY m.volume_num DESC
LIMIT {limit:UInt64}
OFFSET {offset:UInt64}
8 changes: 4 additions & 4 deletions src/routes/polymarket/markets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ import { validatorHook, withErrorResponses } from '../../utils.js';
import baseQuery from './markets.sql' with { type: 'text' };

const querySchema = createQuerySchema({
condition_id: { schema: polymarketConditionIdSchema, optional: true },
market_slug: { schema: polymarketSlugSchema, optional: true },
token_id: { schema: polymarketTokenIdSchema, optional: true },
event_slug: { schema: polymarketSlugSchema, optional: true },
condition_id: { schema: polymarketConditionIdSchema, batched: true, optional: true },
market_slug: { schema: polymarketSlugSchema, batched: true, optional: true },
token_id: { schema: polymarketTokenIdSchema, batched: true, optional: true },
event_slug: { schema: polymarketSlugSchema, batched: true, optional: true },
closed: { schema: booleanFromString, optional: true },
sort_by: { schema: polymarketMarketSortBySchema, prefault: 'volume' },
});
Expand Down
8 changes: 4 additions & 4 deletions src/routes/polymarket/positions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ LEFT JOIN {db_scraper:Identifier}.polymarket_markets_by_asset_id a
LEFT JOIN {db_polymarket:Identifier}.state_latest_price lp FINAL
ON lp.asset_id = p.token_id
WHERE p.interval_min = 0
AND p.user = {user:String}
AND (isNull({token_id:Nullable(String)}) OR p.token_id = toUInt256({token_id:Nullable(String)}))
AND (isNull({condition_id:Nullable(String)}) OR a.condition_id = {condition_id:Nullable(String)})
AND (isNull({market_slug:Nullable(String)}) OR a.market_slug = {market_slug:Nullable(String)})
AND p.user IN {user:Array(String)}
AND (empty({token_id:Array(String)}) OR p.token_id IN (SELECT toUInt256(arrayJoin({token_id:Array(String)}))))
AND (empty({condition_id:Array(String)}) OR a.condition_id IN {condition_id:Array(String)})
AND (empty({market_slug:Array(String)}) OR a.market_slug IN {market_slug:Array(String)})
GROUP BY p.user, p.token_id, a.condition_id, a.market_slug, a.outcome_label, a.closed, lp.close
8 changes: 4 additions & 4 deletions src/routes/polymarket/positions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ import { validatorHook, withErrorResponses } from '../../utils.js';
import baseQuery from './positions.sql' with { type: 'text' };

const querySchema = createQuerySchema({
user: { schema: evmAddress },
token_id: { schema: polymarketTokenIdSchema, optional: true },
condition_id: { schema: polymarketConditionIdSchema, optional: true },
market_slug: { schema: polymarketSlugSchema, optional: true },
user: { schema: evmAddress, batched: true },
token_id: { schema: polymarketTokenIdSchema, batched: true, optional: true },
condition_id: { schema: polymarketConditionIdSchema, batched: true, optional: true },
market_slug: { schema: polymarketSlugSchema, batched: true, optional: true },
closed: { schema: booleanFromString, optional: true },
sort_by: { schema: polymarketPositionSortBySchema, prefault: 'position_value' },
});
Expand Down
2 changes: 1 addition & 1 deletion src/routes/polymarket/users.sql
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ SELECT
last_trade
FROM {db_polymarket:Identifier}.state_user FINAL
WHERE interval_min = {interval_min:UInt32}
AND (isNull({user:Nullable(String)}) OR user = {user:Nullable(String)})
AND (empty({user:Array(String)}) OR user IN {user:Array(String)})
2 changes: 1 addition & 1 deletion src/routes/polymarket/users.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { validatorHook, withErrorResponses } from '../../utils.js';
import baseQuery from './users.sql' with { type: 'text' };

const querySchema = createQuerySchema({
user: { schema: evmAddress, optional: true },
user: { schema: evmAddress, batched: true, optional: true },
interval: { schema: userLookbackIntervalSchema, optional: true },
sort_by: { schema: polymarketUserSortBySchema, prefault: 'total_volume' },
});
Expand Down
Loading