From 1d777968f340ada1c87902b32653e962bfc5a3e2 Mon Sep 17 00:00:00 2001 From: vvwn <39298624+vvwn@users.noreply.github.com> Date: Tue, 24 Feb 2026 14:50:42 +0800 Subject: [PATCH] Add user sync API with Redis integration Implement GET and POST endpoints for user sync data with Redis. --- app/api/user/sync/route.ts | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 app/api/user/sync/route.ts diff --git a/app/api/user/sync/route.ts b/app/api/user/sync/route.ts new file mode 100644 index 0000000..62f0d96 --- /dev/null +++ b/app/api/user/sync/route.ts @@ -0,0 +1,46 @@ +import { Redis } from '@upstash/redis'; +import { NextRequest, NextResponse } from 'next/server'; + +// 确保这行代码在整个文件中只出现一次 +export const runtime = 'edge'; + +const redis = Redis.fromEnv(); + +export async function GET(request: NextRequest) { + const profileId = request.headers.get('x-profile-id'); + + if (!profileId) { + return NextResponse.json({ error: 'Missing profileId' }, { status: 400 }); + } + + try { + const data = await redis.get(`user:sync:${profileId}`); + return NextResponse.json({ + success: true, + data: data || { history: [], favorites: [] } + }); + } catch (error) { + console.error('Redis Get Error:', error); + return NextResponse.json({ error: 'Failed to fetch sync data' }, { status: 500 }); + } +} + +export async function POST(request: NextRequest) { + const profileId = request.headers.get('x-profile-id'); + + if (!profileId) { + return NextResponse.json({ error: 'Missing profileId' }, { status: 400 }); + } + + try { + const body = await request.json(); + const { history, favorites } = body; + + await redis.set(`user:sync:${profileId}`, { history, favorites }); + + return NextResponse.json({ success: true }); + } catch (error) { + console.error('Redis Set Error:', error); + return NextResponse.json({ error: 'Failed to save sync data' }, { status: 500 }); + } +}