2026-01-25 12:30:09 -07:00

113 lines
3.3 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';
import { getSession } from '@/lib/session';
export async function GET() {
try {
const session = await getSession();
if (!session?.user) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
const preferences = await prisma.userPreferences.findUnique({
where: { userId: session.user.id },
});
if (!preferences) {
return NextResponse.json({
substance: 'nicotine',
trackingStartDate: null,
hasCompletedSetup: false,
dailyGoal: null,
quitPlan: null,
userName: null,
userAge: null,
});
}
return NextResponse.json({
substance: preferences.substance,
trackingStartDate: preferences.trackingStartDate,
hasCompletedSetup: preferences.hasCompletedSetup,
dailyGoal: preferences.dailyGoal,
quitPlan: preferences.quitPlanJson ? JSON.parse(preferences.quitPlanJson) : null,
userName: preferences.userName,
userAge: preferences.userAge,
religion: preferences.religion,
lastNicotineUsageTime: preferences.lastNicotineUsageTime,
lastWeedUsageTime: preferences.lastWeedUsageTime,
});
} catch (error) {
console.error('Error fetching preferences:', error);
return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
}
}
export async function POST(request: NextRequest) {
try {
const session = await getSession();
if (!session?.user) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
const body = await request.json();
const {
substance,
trackingStartDate,
hasCompletedSetup,
dailyGoal,
quitPlan,
userName,
userAge,
religion,
lastNicotineUsageTime,
lastWeedUsageTime
} = body;
const preferences = await prisma.userPreferences.upsert({
where: { userId: session.user.id },
update: {
substance,
trackingStartDate,
hasCompletedSetup,
dailyGoal,
quitPlanJson: quitPlan ? JSON.stringify(quitPlan) : null,
userName,
userAge,
religion,
lastNicotineUsageTime,
lastWeedUsageTime,
},
create: {
userId: session.user.id,
substance,
trackingStartDate,
hasCompletedSetup,
dailyGoal,
quitPlanJson: quitPlan ? JSON.stringify(quitPlan) : null,
userName,
userAge,
religion,
lastNicotineUsageTime,
lastWeedUsageTime,
},
});
return NextResponse.json({
substance: preferences.substance,
trackingStartDate: preferences.trackingStartDate,
hasCompletedSetup: preferences.hasCompletedSetup,
dailyGoal: preferences.dailyGoal,
quitPlan: preferences.quitPlanJson ? JSON.parse(preferences.quitPlanJson) : null,
userName: preferences.userName,
userAge: preferences.userAge,
religion: preferences.religion,
lastNicotineUsageTime: preferences.lastNicotineUsageTime,
lastWeedUsageTime: preferences.lastWeedUsageTime,
});
} catch (error) {
console.error('Error saving preferences:', error);
return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
}
}