"use server"; import { getAuth } from "@/auth/queries/getauth"; import { supportedVersionNumber } from "@/lib/helpers"; import { artemis } from "@/lib/prisma"; export async function getCurrentAvatarParts() { const { user } = await getAuth(); if (!user || !user.accessCode) { throw new Error("User is not authenticated or accessCode is missing"); } const CurrentAvatarParts = await artemis.chuni_profile_data.findMany({ where: { user: user.UserId, version: supportedVersionNumber, // TODO: eventually change this so the user can set their own version }, select: { avatarSkin: true, avatarBack: true, avatarFace: true, avatarFront: true, avatarHead: true, avatarItem: true, avatarWear: true, }, }); return CurrentAvatarParts; } export async function updateAvatarParts( avatarHead?: number, avatarFace?: number, avatarBack?: number, avatarWear?: number, avatarItem?: number, ) { const { user } = await getAuth(); if (!user || !user.accessCode) { throw new Error("User is not authenticated or accessCode is missing"); } try { // only including the values that aren't undefined i.e 0 const AvatarPartData: any = {}; if (avatarHead !== undefined) AvatarPartData.avatarHead = avatarHead; if (avatarFace !== undefined) AvatarPartData.avatarFace = avatarFace; if (avatarBack !== undefined) AvatarPartData.avatarBack = avatarBack; if (avatarWear !== undefined) AvatarPartData.avatarWear = avatarWear; if (avatarItem !== undefined) AvatarPartData.avatarItem = avatarItem; const UpdateAvatarHead = await artemis.chuni_profile_data.update({ where: { user_version: { user: user.UserId, version: supportedVersionNumber, }, }, data: AvatarPartData, }); console.log(UpdateAvatarHead); return UpdateAvatarHead; } catch (error) { console.error("Error updating avatar parts:", error); throw error; } } export async function getAllAvatarParts(category: number) { const { user } = await getAuth(); if (!user || !user.accessCode) { throw new Error("User is not authenticated or accessCode is missing"); } const AllAvatarParts = await artemis.chuni_static_avatar.findMany({ where: { category: category, }, select: { id: true, name: true, avatarAccessoryId: true, category: true, version: true, iconPath: true, texturePath: true, }, }); return AllAvatarParts; }