daphnis/components/(customization)/avatarcustomization/actions.ts
2024-08-01 21:42:14 -04:00

94 lines
2.5 KiB
TypeScript

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