mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
125 lines
5.1 KiB
MySQL
125 lines
5.1 KiB
MySQL
|
|
-- Align Rust-managed migrations with legacy Alembic revision
|
||
|
|
-- c3d4e5f6a7b8 (usage_token_semantics_v2).
|
||
|
|
|
||
|
|
DO $$
|
||
|
|
BEGIN
|
||
|
|
IF EXISTS (
|
||
|
|
SELECT 1
|
||
|
|
FROM information_schema.columns
|
||
|
|
WHERE table_schema = 'public'
|
||
|
|
AND table_name = 'usage'
|
||
|
|
AND column_name = 'total_tokens'
|
||
|
|
) AND NOT EXISTS (
|
||
|
|
SELECT 1
|
||
|
|
FROM information_schema.columns
|
||
|
|
WHERE table_schema = 'public'
|
||
|
|
AND table_name = 'usage'
|
||
|
|
AND column_name = 'input_output_total_tokens'
|
||
|
|
) THEN
|
||
|
|
ALTER TABLE "usage" RENAME COLUMN total_tokens TO input_output_total_tokens;
|
||
|
|
END IF;
|
||
|
|
END $$;
|
||
|
|
|
||
|
|
ALTER TABLE "usage"
|
||
|
|
ADD COLUMN IF NOT EXISTS input_output_total_tokens INTEGER DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS cache_creation_input_tokens_5m INTEGER NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS cache_creation_input_tokens_1h INTEGER NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS input_context_tokens INTEGER NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS total_tokens INTEGER NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS cache_creation_cost_usd_5m NUMERIC(20, 8) NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS cache_creation_cost_usd_1h NUMERIC(20, 8) NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS actual_cache_creation_cost_usd_5m NUMERIC(20, 8) NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS actual_cache_creation_cost_usd_1h NUMERIC(20, 8) NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS actual_cache_cost_usd NUMERIC(20, 8) NOT NULL DEFAULT 0,
|
||
|
|
ADD COLUMN IF NOT EXISTS cache_creation_price_per_1m_5m NUMERIC(20, 8),
|
||
|
|
ADD COLUMN IF NOT EXISTS cache_creation_price_per_1m_1h NUMERIC(20, 8);
|
||
|
|
|
||
|
|
UPDATE "usage"
|
||
|
|
SET
|
||
|
|
input_output_total_tokens = src.new_iot,
|
||
|
|
input_context_tokens = src.new_ict,
|
||
|
|
total_tokens = src.new_total,
|
||
|
|
cache_creation_cost_usd_5m = src.new_cc5m,
|
||
|
|
cache_creation_cost_usd_1h = src.new_cc1h,
|
||
|
|
actual_cache_creation_cost_usd_5m = src.new_acc5m,
|
||
|
|
actual_cache_creation_cost_usd_1h = src.new_acc1h,
|
||
|
|
actual_cache_cost_usd = src.new_accu,
|
||
|
|
cache_creation_price_per_1m_5m = src.new_cp5m,
|
||
|
|
cache_creation_price_per_1m_1h = src.new_cp1h,
|
||
|
|
cache_cost_usd = src.new_ccu
|
||
|
|
FROM (
|
||
|
|
SELECT
|
||
|
|
id,
|
||
|
|
COALESCE(
|
||
|
|
input_output_total_tokens,
|
||
|
|
COALESCE(input_tokens, 0) + COALESCE(output_tokens, 0)
|
||
|
|
) AS new_iot,
|
||
|
|
COALESCE(input_tokens, 0) + COALESCE(cache_read_input_tokens, 0) AS new_ict,
|
||
|
|
COALESCE(
|
||
|
|
input_output_total_tokens,
|
||
|
|
COALESCE(input_tokens, 0) + COALESCE(output_tokens, 0)
|
||
|
|
) + COALESCE(cache_creation_input_tokens, 0) + COALESCE(cache_read_input_tokens, 0) AS new_total,
|
||
|
|
CASE
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_5m, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens_1h, 0) = 0
|
||
|
|
THEN COALESCE(cache_creation_cost_usd, 0)
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_5m, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens, 0) > 0
|
||
|
|
THEN COALESCE(cache_creation_cost_usd, 0)
|
||
|
|
* (COALESCE(cache_creation_input_tokens_5m, 0) * 1.0
|
||
|
|
/ GREATEST(COALESCE(cache_creation_input_tokens, 0), 1))
|
||
|
|
ELSE 0
|
||
|
|
END AS new_cc5m,
|
||
|
|
CASE
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_1h, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens_5m, 0) = 0
|
||
|
|
THEN COALESCE(cache_creation_cost_usd, 0)
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_1h, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens, 0) > 0
|
||
|
|
THEN COALESCE(cache_creation_cost_usd, 0)
|
||
|
|
* (COALESCE(cache_creation_input_tokens_1h, 0) * 1.0
|
||
|
|
/ GREATEST(COALESCE(cache_creation_input_tokens, 0), 1))
|
||
|
|
ELSE 0
|
||
|
|
END AS new_cc1h,
|
||
|
|
CASE
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_5m, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens_1h, 0) = 0
|
||
|
|
THEN COALESCE(actual_cache_creation_cost_usd, 0)
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_5m, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens, 0) > 0
|
||
|
|
THEN COALESCE(actual_cache_creation_cost_usd, 0)
|
||
|
|
* (COALESCE(cache_creation_input_tokens_5m, 0) * 1.0
|
||
|
|
/ GREATEST(COALESCE(cache_creation_input_tokens, 0), 1))
|
||
|
|
ELSE 0
|
||
|
|
END AS new_acc5m,
|
||
|
|
CASE
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_1h, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens_5m, 0) = 0
|
||
|
|
THEN COALESCE(actual_cache_creation_cost_usd, 0)
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_1h, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens, 0) > 0
|
||
|
|
THEN COALESCE(actual_cache_creation_cost_usd, 0)
|
||
|
|
* (COALESCE(cache_creation_input_tokens_1h, 0) * 1.0
|
||
|
|
/ GREATEST(COALESCE(cache_creation_input_tokens, 0), 1))
|
||
|
|
ELSE 0
|
||
|
|
END AS new_acc1h,
|
||
|
|
COALESCE(actual_cache_creation_cost_usd, 0)
|
||
|
|
+ COALESCE(actual_cache_read_cost_usd, 0) AS new_accu,
|
||
|
|
CASE
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_5m, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens_1h, 0) = 0
|
||
|
|
THEN cache_creation_price_per_1m
|
||
|
|
ELSE NULL
|
||
|
|
END AS new_cp5m,
|
||
|
|
CASE
|
||
|
|
WHEN COALESCE(cache_creation_input_tokens_1h, 0) > 0
|
||
|
|
AND COALESCE(cache_creation_input_tokens_5m, 0) = 0
|
||
|
|
THEN cache_creation_price_per_1m
|
||
|
|
ELSE NULL
|
||
|
|
END AS new_cp1h,
|
||
|
|
COALESCE(cache_creation_cost_usd, 0)
|
||
|
|
+ COALESCE(cache_read_cost_usd, 0) AS new_ccu
|
||
|
|
FROM "usage"
|
||
|
|
) AS src
|
||
|
|
WHERE "usage".id = src.id;
|