File size: 2,893 Bytes
333c51a
 
30ad7ef
 
 
 
 
 
 
 
333c51a
 
 
 
 
 
 
 
 
30ad7ef
 
 
 
333c51a
 
 
 
 
 
30ad7ef
333c51a
30ad7ef
333c51a
30ad7ef
333c51a
30ad7ef
333c51a
30ad7ef
 
 
333c51a
 
 
30ad7ef
 
 
333c51a
 
 
 
 
 
30ad7ef
 
333c51a
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, 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 });
  }
}