Spaces:
Build error
Build error
File size: 2,885 Bytes
333c51a 30ad7ef 333c51a 1eae852 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 1eae852 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef 333c51a 30ad7ef | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 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, any> = { 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, any> = {};
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 });
}
} |