From c84f6bbe1acacf6e260ef04b5857cd2a5121282d Mon Sep 17 00:00:00 2001 From: neptalu0 Date: Wed, 28 Oct 2026 07:47:04 +0800 Subject: [PATCH] fix: serialize credential expiry to ISO string for PostgreSQL/asyncpg compatibility --- src/credential_manager.py | 2 +- src/storage/database.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/credential_manager.py b/src/credential_manager.py index 8030dbe1c..79a89a29d 100644 --- a/src/credential_manager.py +++ b/src/credential_manager.py @@ -269,7 +269,7 @@ async def refresh_token( credential_data["access_token"] = creds.access_token credential_data["token"] = creds.access_token if creds.expires_at: - credential_data["expiry"] = creds.expires_at + credential_data["expiry"] = creds.expires_at.isoformat() if hasattr(creds.expires_at, "isoformat") else str(creds.expires_at) await database.store_credential(email, credential_data) log.info(f"Token刷新成功并已保存: {email}") diff --git a/src/storage/database.py b/src/storage/database.py index 3e2bc0384..3b03754a0 100644 --- a/src/storage/database.py +++ b/src/storage/database.py @@ -315,7 +315,8 @@ async def store_credential( client_id = credential_data.get("client_id") or "" client_secret = credential_data.get("client_secret") or "" project_id = credential_data.get("project_id") or "" - expiry = credential_data.get("expiry") or "" + expiry_val = credential_data.get("expiry") or "" + expiry = expiry_val.isoformat() if hasattr(expiry_val, "isoformat") else str(expiry_val) tier = credential_data.get("tier") if row: