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 });
  }
}