fix: atomic free-tier budget reservation (ee ref + sqlx)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Diego Imbert
2026-07-14 19:57:02 +02:00
co-authored by Claude Opus 4.8
parent 9812aaa060
commit 3a3d25382d
4 changed files with 48 additions and 21 deletions
@@ -0,0 +1,24 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO ai_free_token_usage (email, cost_nanos, updated_at)\n VALUES ($1, $2::bigint, now())\n ON CONFLICT (email) DO UPDATE\n SET cost_nanos = ai_free_token_usage.cost_nanos + $2::bigint,\n updated_at = now()\n WHERE ai_free_token_usage.cost_nanos < $3::bigint\n RETURNING cost_nanos",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "cost_nanos",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Varchar",
"Int8",
"Int8"
]
},
"nullable": [
false
]
},
"hash": "2546a3ef0d505ad1b116372f24cae65ad4df593cc11dbbd767643fd69dd0bfef"
}
@@ -1,20 +0,0 @@
{
"db_name": "PostgreSQL",
"query": "SELECT cost_nanos FROM ai_free_token_daily_usage WHERE day = (now() at time zone 'utc')::date",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "cost_nanos",
"type_info": "Int8"
}
],
"parameters": {
"Left": []
},
"nullable": [
false
]
},
"hash": "4cb51756e06965798eff26207a6594065744ace99f79b9b65e45c0752b28515f"
}
@@ -0,0 +1,23 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO ai_free_token_daily_usage (day, cost_nanos, updated_at)\n VALUES ((now() at time zone 'utc')::date, $1::bigint, now())\n ON CONFLICT (day) DO UPDATE\n SET cost_nanos = ai_free_token_daily_usage.cost_nanos + $1::bigint,\n updated_at = now()\n WHERE ai_free_token_daily_usage.cost_nanos < $2::bigint\n RETURNING cost_nanos",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "cost_nanos",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Int8",
"Int8"
]
},
"nullable": [
false
]
},
"hash": "cc3d790f50165bf0c0299ea3a9fc4739b904c055b0b5856ca1b6f7a1b4ce43e5"
}
+1 -1
View File
@@ -1 +1 @@
25cbc0a7589fd2acd430e5991e4fdd36dde8c215
48f5e2ec3b3bb903b7c172a6e7925967a464b331