Merge upstream main into feat/500-api-key-ip-whitelist

This commit is contained in:
RWDai
2026-05-20 10:26:56 +08:00
501 changed files with 47013 additions and 3667 deletions

View File

@@ -291,7 +291,8 @@ CREATE TABLE IF NOT EXISTS provider_api_keys (
metadata TEXT,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
KEY provider_api_keys_provider_id_idx (provider_id)
KEY provider_api_keys_provider_id_idx (provider_id),
KEY idx_provider_api_keys_provider_default_sort (provider_id, internal_priority, name, id)
);
CREATE TABLE IF NOT EXISTS pool_member_scores (

View File

@@ -0,0 +1,32 @@
CREATE TABLE IF NOT EXISTS usage_counter_deltas (
`id` VARCHAR(36) NOT NULL,
`request_id` VARCHAR(128) NOT NULL,
`kind` VARCHAR(64) NOT NULL,
`target_id` TEXT NOT NULL,
`request_count_delta` BIGINT NOT NULL DEFAULT 0,
`total_requests_delta` BIGINT NOT NULL DEFAULT 0,
`success_count_delta` BIGINT NOT NULL DEFAULT 0,
`error_count_delta` BIGINT NOT NULL DEFAULT 0,
`dns_failures_delta` BIGINT NOT NULL DEFAULT 0,
`stream_errors_delta` BIGINT NOT NULL DEFAULT 0,
`total_tokens_delta` BIGINT NOT NULL DEFAULT 0,
`total_cost_usd_delta` DOUBLE NOT NULL DEFAULT 0,
`total_response_time_ms_delta` BIGINT NOT NULL DEFAULT 0,
`last_used_at_unix_secs` BIGINT,
`last_used_ip` TEXT,
`candidate_last_used_at_unix_secs` BIGINT,
`removed_last_used_at_unix_secs` BIGINT,
`usage_created_at_unix_secs` BIGINT,
`created_at` BIGINT NOT NULL,
`processed_at` BIGINT,
PRIMARY KEY (`id`),
KEY ix_usage_counter_deltas_unprocessed (`created_at`, `id`),
KEY ix_usage_counter_deltas_processed (`processed_at`, `created_at`, `id`),
KEY ix_usage_counter_deltas_request_kind (`request_id`, `kind`, `target_id`(191))
);
CREATE INDEX video_tasks_due_poll_idx
ON video_tasks (status, next_poll_at, updated_at);
CREATE INDEX idx_entitlement_usage_entitlement_date
ON entitlement_usage_ledgers (user_entitlement_id, usage_date);

View File

@@ -0,0 +1,62 @@
ALTER TABLE users
ADD COLUMN privacy_policy_accepted_version VARCHAR(64),
ADD COLUMN privacy_policy_accepted_at BIGINT;
ALTER TABLE announcements
ADD COLUMN requires_ack BOOLEAN NOT NULL DEFAULT FALSE;
CREATE TABLE IF NOT EXISTS user_invite_codes (
user_id VARCHAR(64) PRIMARY KEY,
invite_code VARCHAR(64) NOT NULL UNIQUE,
active BOOLEAN NOT NULL DEFAULT TRUE,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
CONSTRAINT user_invite_codes_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS user_referrals (
id VARCHAR(64) PRIMARY KEY,
inviter_user_id VARCHAR(64) NOT NULL,
invitee_user_id VARCHAR(64) NOT NULL UNIQUE,
invite_code_snapshot VARCHAR(64) NOT NULL,
source_json TEXT,
first_paid_order_id VARCHAR(64),
first_paid_at BIGINT,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
KEY idx_user_referrals_inviter (inviter_user_id, created_at),
KEY idx_user_referrals_created (created_at),
KEY idx_user_referrals_invite_code (invite_code_snapshot),
CONSTRAINT user_referrals_inviter_user_id_fkey FOREIGN KEY (inviter_user_id) REFERENCES users(id) ON DELETE CASCADE,
CONSTRAINT user_referrals_invitee_user_id_fkey FOREIGN KEY (invitee_user_id) REFERENCES users(id) ON DELETE CASCADE,
CONSTRAINT user_referrals_first_paid_order_fkey FOREIGN KEY (first_paid_order_id) REFERENCES payment_orders(id) ON DELETE SET NULL
);
CREATE TABLE IF NOT EXISTS referral_rewards (
id VARCHAR(64) PRIMARY KEY,
referral_id VARCHAR(64) NOT NULL,
inviter_user_id VARCHAR(64) NOT NULL,
invitee_user_id VARCHAR(64) NOT NULL,
reward_type VARCHAR(32) NOT NULL,
trigger_point VARCHAR(64) NOT NULL,
source_order_id VARCHAR(64),
idempotency_key VARCHAR(128) NOT NULL UNIQUE,
amount_usd DOUBLE NOT NULL,
status VARCHAR(32) NOT NULL DEFAULT 'pending',
wallet_transaction_id VARCHAR(64),
reversed_amount_usd DOUBLE NOT NULL DEFAULT 0,
pending_reversal_amount_usd DOUBLE NOT NULL DEFAULT 0,
failure_reason TEXT,
admin_operator_id VARCHAR(64),
admin_note TEXT,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
KEY idx_referral_rewards_inviter_status (inviter_user_id, status, created_at),
KEY idx_referral_rewards_inviter_created (inviter_user_id, created_at),
KEY idx_referral_rewards_created (created_at),
KEY idx_referral_rewards_source_order (source_order_id),
CONSTRAINT referral_rewards_referral_id_fkey FOREIGN KEY (referral_id) REFERENCES user_referrals(id) ON DELETE CASCADE,
CONSTRAINT referral_rewards_inviter_user_id_fkey FOREIGN KEY (inviter_user_id) REFERENCES users(id) ON DELETE CASCADE,
CONSTRAINT referral_rewards_invitee_user_id_fkey FOREIGN KEY (invitee_user_id) REFERENCES users(id) ON DELETE CASCADE,
CONSTRAINT referral_rewards_source_order_fkey FOREIGN KEY (source_order_id) REFERENCES payment_orders(id) ON DELETE SET NULL
);

View File

@@ -0,0 +1 @@
ALTER TABLE oauth_providers ADD COLUMN icon_url VARCHAR(500);

View File

@@ -0,0 +1,15 @@
SET @aether_provider_key_default_sort_index_sql := IF(
(
SELECT COUNT(*)
FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'provider_api_keys'
AND index_name = 'idx_provider_api_keys_provider_default_sort'
) = 0,
'CREATE INDEX idx_provider_api_keys_provider_default_sort ON provider_api_keys (provider_id, internal_priority, name, id)',
'DO 0'
);
PREPARE aether_provider_key_default_sort_index_stmt FROM @aether_provider_key_default_sort_index_sql;
EXECUTE aether_provider_key_default_sort_index_stmt;
DEALLOCATE PREPARE aether_provider_key_default_sort_index_stmt;