oracle / offchain.sql
zirobtc's picture
Upload folder using huggingface_hub
bf92148
-- Table for Twitter/X posts with Unix timestamps
CREATE TABLE IF NOT EXISTS default.x_posts
(
`timestamp` DateTime('UTC'),
`id` String,
`type` String,
`author_handle` String,
`body_text` String,
`urls_list` Array(String),
`mentions_list` Array(String),
`images` Array(String),
`is_quote_tweet` UInt8,
`subtweet_author_handle` Nullable(String),
`subtweet_text` Nullable(String),
`subtweet_images` Array(String),
`raw_data_compressed` String
)
ENGINE = ReplacingMergeTree(timestamp)
ORDER BY (id, timestamp);
-- Table for follows, using handles instead of IDs
CREATE TABLE IF NOT EXISTS default.x_follows
(
`timestamp` DateTime('UTC'),
`event_id` String,
`author_handle` String,
`followed_author_handle` String,
`raw_data_compressed` String
)
ENGINE = MergeTree()
ORDER BY (timestamp, author_handle, followed_author_handle);
-- Table for specific profile actions, using handles
CREATE TABLE IF NOT EXISTS default.x_profile_actions
(
`timestamp` DateTime('UTC'),
`event_id` String,
`author_handle` String,
`action_type` String,
`raw_data_compressed` String
)
ENGINE = MergeTree()
ORDER BY (timestamp, author_handle);
-- Table for DexScreener trending snapshots with Unix timestamps
CREATE TABLE IF NOT EXISTS default.dextrending_snapshots
(
`timestamp` DateTime('UTC'),
`timeframe` String,
`trending_tokens` Nested(
-- Core Identifiers
token_address String,
token_name String,
ticker String,
token_image String,
protocol String,
created_at UInt32,
-- Financial Metrics
market_cap Float64,
volume_sol Float64,
liquidity_sol Float64,
-- Activity Metrics
buy_count UInt32,
sell_count UInt32,
-- Holder & Tokenomics Metrics
top_10_holders_pct Float32,
lp_burned_pct Nullable(Float32),
total_supply Float64,
-- Social Links
website Nullable(String),
twitter Nullable(String),
telegram Nullable(String)
)
)
ENGINE = MergeTree()
ORDER BY (timestamp, timeframe);
-- Table for Lighthouse protocol stats (wide format) with Unix timestamps
CREATE TABLE IF NOT EXISTS default.protocol_stats_snapshots
(
`timestamp` DateTime('UTC'),
`timeframe` String, -- '5m', '1h', '6h', '24h'
-- Protocol Specific Stats
`protocol_name` String, -- e.g., 'All', 'Pump V1', 'Meteora DLMM'
`total_volume` Float64,
`total_transactions` UInt64,
`total_traders` UInt64,
`total_tokens_created` UInt32,
`total_migrations` UInt32,
-- Percentage Change Metrics
`volume_pct_change` Float32,
`transactions_pct_change` Float32,
`traders_pct_change` Float32,
`tokens_created_pct_change` Float32,
`migrations_pct_change` Float32
)
ENGINE = MergeTree()
ORDER BY (timestamp, timeframe, protocol_name);
CREATE TABLE IF NOT EXISTS default.phantomtrending_snapshots
(
`timestamp` UInt64,
`timeframe` String,
`trending_tokens` Nested(
`token_address` String,
`token_name` String,
`ticker` String,
`token_image` String,
`market_cap` Float64,
`volume` Float64,
`price` Float64,
`price_change_pct` Float32,
`volume_change_pct` Float32
)
)
ENGINE = MergeTree()
ORDER BY (timestamp, timeframe);
-- Table for tokens that have paid for a profile (one-time event per token)
CREATE TABLE IF NOT EXISTS default.dex_paid_tokens
(
`timestamp` UInt64,
`token_address` String,
`chain_id` String,
`description` Nullable(String),
`icon_url` Nullable(String),
`header_url` Nullable(String),
-- Structured Social Links
`website` Nullable(String),
`twitter` Nullable(String),
`telegram` Nullable(String),
`discord` Nullable(String)
)
ENGINE = ReplacingMergeTree(timestamp)
PRIMARY KEY (token_address)
ORDER BY (token_address);
-- Table to log every boost event over time
CREATE TABLE IF NOT EXISTS default.dex_boost_events
(
`timestamp` UInt64,
`token_address` String,
`chain_id` String,
`amount` Float64,
`total_amount` Float64,
`description` Nullable(String),
`icon_url` Nullable(String),
`header_url` Nullable(String),
-- Structured Social Links
`website` Nullable(String),
`twitter` Nullable(String),
`telegram` Nullable(String),
`discord` Nullable(String)
)
ENGINE = MergeTree()
ORDER BY (timestamp);
CREATE TABLE IF NOT EXISTS default.dex_top_boost_snapshots
(
`timestamp` UInt64,
`top_boosted_tokens` Nested(
`token_address` String,
`chain_id` String,
`total_amount` Float64,
`description` Nullable(String),
`icon_url` Nullable(String),
`header_url` Nullable(String),
-- Structured Social Links
`website` Nullable(String),
`twitter` Nullable(String),
`telegram` Nullable(String),
`discord` Nullable(String)
)
)
ENGINE = MergeTree()
ORDER BY timestamp;
CREATE TABLE IF NOT EXISTS default.x_trending_hashtags_snapshots
(
`timestamp` DateTime('UTC'),
`country_code` String,
`trends` Nested(
`name` String,
`tweet_count` Nullable(UInt64)
)
)
ENGINE = MergeTree()
ORDER BY (country_code, timestamp);
CREATE TABLE IF NOT EXISTS default.pump_replies
(
`timestamp` DateTime('UTC'),
`id` UInt64,
`mint` String,
`user` String,
`username` Nullable(String),
`text` String,
`total_likes` UInt32,
`file_uri` Nullable(String)
)
ENGINE = MergeTree()
ORDER BY (mint, timestamp);
CREATE TABLE IF NOT EXISTS default.wallet_socials
(
`wallet_address` String,
`pumpfun_username` Nullable(String),
`pumpfun_image` Nullable(String),
`bio` Nullable(String),
`pumpfun_followers` Nullable(UInt32),
`pumpfun_following` Array(String),
`kolscan_name` Nullable(String),
`twitter_username` Nullable(String),
`telegram_channel` Nullable(String),
`profile_image` Nullable(String),
`cabalspy_name` Nullable(String),
`updated_at` DateTime('UTC'),
`axiom_kol_name` Nullable(String)
)
ENGINE = ReplacingMergeTree(updated_at)
PRIMARY KEY (wallet_address)
ORDER BY (wallet_address);
CREATE TABLE IF NOT EXISTS default.leaderboard_snapshots
(
`timestamp` DateTime('UTC'),
`source` String, -- 'kolscan', 'cabalspy', 'axiom_vision'
`wallets` Array(String) -- An array of wallet addresses, ordered by rank (index 0 = rank 1)
)
ENGINE = MergeTree()
ORDER BY (source, timestamp);
CREATE TABLE IF NOT EXISTS default.alpha_groups
(
`group_id` String,
`name` String,
`short_name` Nullable(String),
`image_url` Nullable(String),
`source` Enum8('discord' = 1, 'telegram' = 2, 'telegram_call' = 3),
`updated_at` DateTime('UTC')
)
ENGINE = MergeTree()
PRIMARY KEY (group_id)
ORDER BY (group_id);
CREATE TABLE IF NOT EXISTS default.alpha_mentions
(
`timestamp` DateTime('UTC'),
`group_id` String,
`channel_id` String,
`message_id` String,
`chain` Nullable(String),
`token_address` String
)
ENGINE = MergeTree()
ORDER BY (message_id, token_address, timestamp);
CREATE TABLE IF NOT EXISTS default.chain_stats_snapshots
(
`timestamp` DateTime('UTC'),
`sol_price_usd` Float64,
`jito_tip_fee` Float64
)
ENGINE = MergeTree()
ORDER BY (timestamp);
CREATE TABLE IF NOT EXISTS default.cex_listings
(
`timestamp` DateTime('UTC'),
`exchange_name` String,
`token_name` String,
`ticker` Nullable(String),
`token_address` Nullable(String),
`chain_id` Nullable(String),
`source_tweet_id` String
)
ENGINE = MergeTree()
ORDER BY (timestamp, exchange_name);
CREATE TABLE IF NOT EXISTS default.tiktok_trending_hashtags_snapshots
(
`timestamp` DateTime('UTC'),
`country_code` String,
`trends` Nested(
`hashtag_name` String,
`rank` UInt16,
`publish_count` UInt32,
`video_views` UInt64,
`creator_nicknames` Array(String)
)
)
ENGINE = MergeTree()
ORDER BY (country_code, timestamp);