Fix Seed Image 27 Jan
This commit is contained in:
@@ -1,25 +1,78 @@
|
||||
// import prisma from "@/lib/prisma";
|
||||
|
||||
// // Ganti nama fungsi dan logikanya
|
||||
// export default async function resolveImageById(
|
||||
// imageId?: string | null
|
||||
// ): Promise<string | null> {
|
||||
// if (!imageId) return null;
|
||||
|
||||
// const image = await prisma.fileStorage.findFirst({
|
||||
// where: {
|
||||
// id: imageId, // ← cari berdasarkan ID
|
||||
// category: "image",
|
||||
// isActive: true,
|
||||
// deletedAt: null,
|
||||
// },
|
||||
// select: { id: true },
|
||||
// });
|
||||
|
||||
// if (!image) {
|
||||
// console.warn(`⚠️ Image with ID ${imageId} not found`);
|
||||
// return null;
|
||||
// }
|
||||
|
||||
// return image.id;
|
||||
// }
|
||||
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
// Ganti nama fungsi dan logikanya
|
||||
export default async function resolveImageById(
|
||||
imageId?: string | null
|
||||
): Promise<string | null> {
|
||||
/**
|
||||
* Resolve image ID by checking multiple possible names
|
||||
* @param imageId - The ID from JSON (could be filename or actual ID)
|
||||
* @returns The actual database ID or null
|
||||
*/
|
||||
export default async function resolveImageById(imageId: string | null): Promise<string | null> {
|
||||
if (!imageId) return null;
|
||||
|
||||
const image = await prisma.fileStorage.findFirst({
|
||||
where: {
|
||||
id: imageId, // ← cari berdasarkan ID
|
||||
category: "image",
|
||||
isActive: true,
|
||||
deletedAt: null,
|
||||
},
|
||||
select: { id: true },
|
||||
});
|
||||
try {
|
||||
// 1. Coba cari berdasarkan ID langsung
|
||||
const byId = await prisma.fileStorage.findUnique({
|
||||
where: { id: imageId },
|
||||
select: { id: true },
|
||||
});
|
||||
if (byId) return byId.id;
|
||||
|
||||
if (!image) {
|
||||
console.warn(`⚠️ Image with ID ${imageId} not found`);
|
||||
// 2. Coba cari berdasarkan name (exact match)
|
||||
const byName = await prisma.fileStorage.findUnique({
|
||||
where: { name: imageId },
|
||||
select: { id: true },
|
||||
});
|
||||
if (byName) return byName.id;
|
||||
|
||||
// 3. Coba cari berdasarkan realName
|
||||
const byRealName = await prisma.fileStorage.findFirst({
|
||||
where: { realName: imageId },
|
||||
select: { id: true },
|
||||
});
|
||||
if (byRealName) return byRealName.id;
|
||||
|
||||
// 4. Coba dengan menambahkan ekstensi .webp
|
||||
const withWebp = `${imageId.replace(/\.(jpg|jpeg|png)$/i, '')}.webp`;
|
||||
const byWebp = await prisma.fileStorage.findFirst({
|
||||
where: {
|
||||
OR: [
|
||||
{ name: withWebp },
|
||||
{ name: { contains: imageId.split('.')[0] } },
|
||||
],
|
||||
},
|
||||
select: { id: true },
|
||||
});
|
||||
if (byWebp) return byWebp.id;
|
||||
|
||||
console.warn(`⚠️ Image not found for: ${imageId}`);
|
||||
return null;
|
||||
} catch (error) {
|
||||
console.error(`❌ Error resolving image ${imageId}:`, error);
|
||||
return null;
|
||||
}
|
||||
|
||||
return image.id;
|
||||
}
|
||||
Reference in New Issue
Block a user