sofia-cloud / src /app /api /pets /route.ts
Gmagl
Fix: All API routes corrected - no fs/path, proper typing
30ad7ef
raw
history blame
2.89 kB
import { NextRequest, NextResponse } from "next/server";
import ZAI from "z-ai-web-dev-sdk";
import { db } from "@/lib/db";
const PET_TYPES: Record<string, { name: string; engagementBoost: number }> = {
dog: { name: "Perro", engagementBoost: 35 },
cat: { name: "Gato", engagementBoost: 28 },
bird: { name: "Pajaro", engagementBoost: 15 },
rabbit: { name: "Conejo", engagementBoost: 22 },
hamster: { name: "Hamster", engagementBoost: 18 }
};
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url);
const characterId = searchParams.get("characterId");
const where: Record<string, unknown> = { isActive: true };
if (characterId) where.characterId = characterId;
const pets = await db.pet.findMany({ where, orderBy: { createdAt: "desc" } });
return NextResponse.json({ success: true, pets, petTypes: PET_TYPES });
} catch {
return NextResponse.json({ success: false, error: "Error" }, { status: 500 });
}
}
export async function POST(request: NextRequest) {
try {
const body = await request.json();
const { name, type, breed, personality, characterId } = body;
if (!name) return NextResponse.json({ success: false, error: "Nombre requerido" }, { status: 400 });
const petType = PET_TYPES[type] || PET_TYPES.dog;
const pet = await db.pet.create({
data: {
name, type: type || "dog", breed: breed || null,
personality: personality || null, characterId: characterId || null,
traits: JSON.stringify({ engagementBoost: petType.engagementBoost })
}
});
return NextResponse.json({ success: true, pet, engagementBoost: petType.engagementBoost });
} catch {
return NextResponse.json({ success: false, error: "Error" }, { status: 500 });
}
}
export async function PUT(request: NextRequest) {
try {
const body = await request.json();
const { id, personality, isActive } = body;
if (!id) return NextResponse.json({ success: false, error: "ID requerido" }, { status: 400 });
const data: Record<string, unknown> = {};
if (personality) data.personality = personality;
if (isActive !== undefined) data.isActive = isActive;
const pet = await db.pet.update({ where: { id }, data });
return NextResponse.json({ success: true, pet });
} catch {
return NextResponse.json({ success: false, error: "Error" }, { status: 500 });
}
}
export async function DELETE(request: NextRequest) {
try {
const { searchParams } = new URL(request.url);
const id = searchParams.get("id");
if (!id) return NextResponse.json({ success: false, error: "ID requerido" }, { status: 400 });
await db.pet.update({ where: { id }, data: { isActive: false } });
return NextResponse.json({ success: true });
} catch {
return NextResponse.json({ success: false, error: "Error" }, { status: 500 });
}
}