add trip image
This commit is contained in:
+136
-94
@@ -11,81 +11,93 @@ const prisma = new PrismaClient({ adapter });
|
||||
async function main() {
|
||||
console.log("🌱 Seeding database...\n");
|
||||
|
||||
// Clean existing data (order matters for FK)
|
||||
await prisma.tripParticipant.deleteMany();
|
||||
await prisma.tripImage.deleteMany();
|
||||
await prisma.trip.deleteMany();
|
||||
await prisma.user.deleteMany();
|
||||
|
||||
// ==================== USERS ====================
|
||||
|
||||
const password = await bcrypt.hash("password123", 12);
|
||||
|
||||
// Organizer
|
||||
const organizer1 = await prisma.user.upsert({
|
||||
where: { email: "andi@setrip.id" },
|
||||
update: {},
|
||||
create: {
|
||||
name: "Andi Pendaki",
|
||||
email: "andi@setrip.id",
|
||||
const dede = await prisma.user.create({
|
||||
data: {
|
||||
name: "Dede Inoen",
|
||||
email: "dede.inoen@setrip.id",
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
const organizer2 = await prisma.user.upsert({
|
||||
where: { email: "rina@setrip.id" },
|
||||
update: {},
|
||||
create: {
|
||||
name: "Rina Explorer",
|
||||
email: "rina@setrip.id",
|
||||
const panji = await prisma.user.create({
|
||||
data: {
|
||||
name: "Panji Petualang",
|
||||
email: "panji@setrip.id",
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
// User biasa (join trip)
|
||||
const user1 = await prisma.user.upsert({
|
||||
where: { email: "budi@gmail.com" },
|
||||
update: {},
|
||||
create: {
|
||||
const fiersa = await prisma.user.create({
|
||||
data: {
|
||||
name: "Fiersa Besari",
|
||||
email: "fiersa@setrip.id",
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
// User biasa (peserta)
|
||||
const budi = await prisma.user.create({
|
||||
data: {
|
||||
name: "Budi Santoso",
|
||||
email: "budi@gmail.com",
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
const user2 = await prisma.user.upsert({
|
||||
where: { email: "sari@gmail.com" },
|
||||
update: {},
|
||||
create: {
|
||||
const sari = await prisma.user.create({
|
||||
data: {
|
||||
name: "Sari Dewi",
|
||||
email: "sari@gmail.com",
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
const user3 = await prisma.user.upsert({
|
||||
where: { email: "doni@gmail.com" },
|
||||
update: {},
|
||||
create: {
|
||||
const doni = await prisma.user.create({
|
||||
data: {
|
||||
name: "Doni Prasetyo",
|
||||
email: "doni@gmail.com",
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
const user4 = await prisma.user.upsert({
|
||||
where: { email: "maya@gmail.com" },
|
||||
update: {},
|
||||
create: {
|
||||
const maya = await prisma.user.create({
|
||||
data: {
|
||||
name: "Maya Putri",
|
||||
email: "maya@gmail.com",
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
const raka = await prisma.user.create({
|
||||
data: {
|
||||
name: "Raka Aditya",
|
||||
email: "raka@gmail.com",
|
||||
password,
|
||||
},
|
||||
});
|
||||
|
||||
console.log("✅ Users created");
|
||||
console.log(" Organizer: andi@setrip.id, rina@setrip.id");
|
||||
console.log(" Users: budi@gmail.com, sari@gmail.com, doni@gmail.com, maya@gmail.com");
|
||||
console.log(" Organizer: dede.inoen@setrip.id, panji@setrip.id, fiersa@setrip.id");
|
||||
console.log(" Peserta: budi, sari, doni, maya, raka @gmail.com");
|
||||
console.log(" Password semua: password123\n");
|
||||
|
||||
// ==================== TRIPS ====================
|
||||
// ==================== TRIPS + IMAGES ====================
|
||||
|
||||
const now = new Date();
|
||||
const day = 24 * 60 * 60 * 1000;
|
||||
|
||||
// --- Trip 1: Papandayan (by Dede Inoen) ---
|
||||
const trip1 = await prisma.trip.create({
|
||||
data: {
|
||||
title: "Open Trip Papandayan Weekend",
|
||||
@@ -100,14 +112,22 @@ Itinerary:
|
||||
- Minggu: Sunrise → Turun → Pulang`,
|
||||
mountain: "Gunung Papandayan",
|
||||
location: "Garut, Jawa Barat",
|
||||
date: new Date(now.getTime() + 3 * 24 * 60 * 60 * 1000), // 3 hari lagi
|
||||
date: new Date(now.getTime() + 3 * day),
|
||||
maxParticipants: 10,
|
||||
price: 250000,
|
||||
status: "OPEN",
|
||||
organizerId: organizer1.id,
|
||||
organizerId: dede.id,
|
||||
images: {
|
||||
create: [
|
||||
{ url: "/images/seed/papandayan-1.svg", caption: "Kawah Papandayan", order: 0 },
|
||||
{ url: "/images/seed/papandayan-2.svg", caption: "Track menuju puncak", order: 1 },
|
||||
{ url: "/images/seed/papandayan-3.svg", caption: "Camping ground Pondok Salada", order: 2 },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// --- Trip 2: Ciremai (by Panji Petualang) ---
|
||||
const trip2 = await prisma.trip.create({
|
||||
data: {
|
||||
title: "Pendakian Ciremai via Apuy",
|
||||
@@ -122,14 +142,22 @@ Itinerary:
|
||||
- Hari 2: Summit attack → Turun → Pulang`,
|
||||
mountain: "Gunung Ciremai",
|
||||
location: "Kuningan, Jawa Barat",
|
||||
date: new Date(now.getTime() + 5 * 24 * 60 * 60 * 1000), // 5 hari lagi
|
||||
date: new Date(now.getTime() + 5 * day),
|
||||
maxParticipants: 8,
|
||||
price: 350000,
|
||||
status: "OPEN",
|
||||
organizerId: organizer1.id,
|
||||
organizerId: panji.id,
|
||||
images: {
|
||||
create: [
|
||||
{ url: "/images/seed/ciremai-1.svg", caption: "Puncak Ciremai 3.078 mdpl", order: 0 },
|
||||
{ url: "/images/seed/ciremai-2.svg", caption: "Jalur pendakian via Apuy", order: 1 },
|
||||
{ url: "/images/seed/ciremai-3.svg", caption: "Sunrise dari puncak", order: 2 },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// --- Trip 3: Gede-Pangrango (by Fiersa Besari) ---
|
||||
const trip3 = await prisma.trip.create({
|
||||
data: {
|
||||
title: "Sunrise Trip Gede-Pangrango",
|
||||
@@ -142,14 +170,23 @@ Itinerary:
|
||||
Start malam, summit saat sunrise. View epic dijamin!`,
|
||||
mountain: "Gunung Gede",
|
||||
location: "Bogor/Cianjur, Jawa Barat",
|
||||
date: new Date(now.getTime() + 6 * 24 * 60 * 60 * 1000), // 6 hari lagi
|
||||
date: new Date(now.getTime() + 6 * day),
|
||||
maxParticipants: 12,
|
||||
price: 280000,
|
||||
status: "OPEN",
|
||||
organizerId: organizer2.id,
|
||||
organizerId: fiersa.id,
|
||||
images: {
|
||||
create: [
|
||||
{ url: "/images/seed/gede-1.svg", caption: "Puncak Gunung Gede", order: 0 },
|
||||
{ url: "/images/seed/gede-2.svg", caption: "Surya Kencana padang edelweis", order: 1 },
|
||||
{ url: "/images/seed/gede-3.svg", caption: "Blue lake / Danau Biru", order: 2 },
|
||||
{ url: "/images/seed/gede-4.svg", caption: "Night hike track Cibodas", order: 3 },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// --- Trip 4: Tangkuban Parahu (by Dede Inoen) ---
|
||||
const trip4 = await prisma.trip.create({
|
||||
data: {
|
||||
title: "Trip Hemat Tangkuban Parahu",
|
||||
@@ -162,14 +199,21 @@ Start malam, summit saat sunrise. View epic dijamin!`,
|
||||
Explore Kawah Ratu, Kawah Domas, foto-foto, terus makan sate maranggi!`,
|
||||
mountain: "Gunung Tangkuban Parahu",
|
||||
location: "Bandung, Jawa Barat",
|
||||
date: new Date(now.getTime() + 2 * 24 * 60 * 60 * 1000), // 2 hari lagi
|
||||
date: new Date(now.getTime() + 2 * day),
|
||||
maxParticipants: 15,
|
||||
price: 120000,
|
||||
status: "OPEN",
|
||||
organizerId: organizer2.id,
|
||||
organizerId: dede.id,
|
||||
images: {
|
||||
create: [
|
||||
{ url: "/images/seed/tangkuban-1.svg", caption: "Kawah Ratu", order: 0 },
|
||||
{ url: "/images/seed/tangkuban-2.svg", caption: "Kawah Domas", order: 1 },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// --- Trip 5: Malabar (by Fiersa Besari) ---
|
||||
const trip5 = await prisma.trip.create({
|
||||
data: {
|
||||
title: "Malabar Night Hike",
|
||||
@@ -182,14 +226,22 @@ Explore Kawah Ratu, Kawah Domas, foto-foto, terus makan sate maranggi!`,
|
||||
Trip ringan, 3-4 jam naik. Cocok buat yang mau healing malam-malam.`,
|
||||
mountain: "Gunung Malabar",
|
||||
location: "Bandung, Jawa Barat",
|
||||
date: new Date(now.getTime() + 4 * 24 * 60 * 60 * 1000), // 4 hari lagi
|
||||
date: new Date(now.getTime() + 4 * day),
|
||||
maxParticipants: 10,
|
||||
price: 150000,
|
||||
status: "OPEN",
|
||||
organizerId: organizer1.id,
|
||||
organizerId: fiersa.id,
|
||||
images: {
|
||||
create: [
|
||||
{ url: "/images/seed/malabar-1.svg", caption: "Puncak Malabar malam hari", order: 0 },
|
||||
{ url: "/images/seed/malabar-2.svg", caption: "View Bandung dari atas", order: 1 },
|
||||
{ url: "/images/seed/malabar-3.svg", caption: "Track pendakian", order: 2 },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// --- Trip 6: Guntur (by Panji Petualang) ---
|
||||
const trip6 = await prisma.trip.create({
|
||||
data: {
|
||||
title: "Guntur Challenge Trip",
|
||||
@@ -202,72 +254,62 @@ Trip ringan, 3-4 jam naik. Cocok buat yang mau healing malam-malam.`,
|
||||
Buat yang suka challenge. Pemandangan kawah aktif dari dekat!`,
|
||||
mountain: "Gunung Guntur",
|
||||
location: "Garut, Jawa Barat",
|
||||
date: new Date(now.getTime() + 10 * 24 * 60 * 60 * 1000), // 10 hari lagi
|
||||
date: new Date(now.getTime() + 10 * day),
|
||||
maxParticipants: 8,
|
||||
price: 300000,
|
||||
status: "OPEN",
|
||||
organizerId: organizer2.id,
|
||||
organizerId: panji.id,
|
||||
images: {
|
||||
create: [
|
||||
{ url: "/images/seed/guntur-1.svg", caption: "Kawah aktif Gunung Guntur", order: 0 },
|
||||
{ url: "/images/seed/guntur-2.svg", caption: "Jalur berbatu menuju puncak", order: 1 },
|
||||
{ url: "/images/seed/guntur-3.svg", caption: "View dari puncak", order: 2 },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
console.log("✅ 6 Trips created\n");
|
||||
console.log("✅ 6 Trips + images created\n");
|
||||
|
||||
// ==================== PARTICIPANTS ====================
|
||||
|
||||
// Trip 1 (Papandayan) — 3 peserta
|
||||
await prisma.tripParticipant.createMany({
|
||||
data: [
|
||||
{ tripId: trip1.id, userId: user1.id, status: "CONFIRMED" },
|
||||
{ tripId: trip1.id, userId: user2.id, status: "CONFIRMED" },
|
||||
{ tripId: trip1.id, userId: user3.id, status: "CONFIRMED" },
|
||||
// Papandayan — 4 peserta
|
||||
{ tripId: trip1.id, userId: budi.id, status: "CONFIRMED" },
|
||||
{ tripId: trip1.id, userId: sari.id, status: "CONFIRMED" },
|
||||
{ tripId: trip1.id, userId: doni.id, status: "CONFIRMED" },
|
||||
{ tripId: trip1.id, userId: raka.id, status: "CONFIRMED" },
|
||||
|
||||
// Ciremai — 2 peserta
|
||||
{ tripId: trip2.id, userId: budi.id, status: "CONFIRMED" },
|
||||
{ tripId: trip2.id, userId: maya.id, status: "CONFIRMED" },
|
||||
|
||||
// Gede — 5 peserta
|
||||
{ tripId: trip3.id, userId: budi.id, status: "CONFIRMED" },
|
||||
{ tripId: trip3.id, userId: sari.id, status: "CONFIRMED" },
|
||||
{ tripId: trip3.id, userId: doni.id, status: "CONFIRMED" },
|
||||
{ tripId: trip3.id, userId: maya.id, status: "CONFIRMED" },
|
||||
{ tripId: trip3.id, userId: raka.id, status: "CONFIRMED" },
|
||||
|
||||
// Tangkuban Parahu — 5 peserta
|
||||
{ tripId: trip4.id, userId: budi.id, status: "CONFIRMED" },
|
||||
{ tripId: trip4.id, userId: sari.id, status: "CONFIRMED" },
|
||||
{ tripId: trip4.id, userId: doni.id, status: "CONFIRMED" },
|
||||
{ tripId: trip4.id, userId: maya.id, status: "CONFIRMED" },
|
||||
{ tripId: trip4.id, userId: raka.id, status: "CONFIRMED" },
|
||||
|
||||
// Malabar — 2 peserta
|
||||
{ tripId: trip5.id, userId: sari.id, status: "CONFIRMED" },
|
||||
{ tripId: trip5.id, userId: maya.id, status: "CONFIRMED" },
|
||||
|
||||
// Guntur — 0 peserta
|
||||
],
|
||||
});
|
||||
|
||||
// Trip 2 (Ciremai) — 2 peserta
|
||||
await prisma.tripParticipant.createMany({
|
||||
data: [
|
||||
{ tripId: trip2.id, userId: user1.id, status: "CONFIRMED" },
|
||||
{ tripId: trip2.id, userId: user4.id, status: "CONFIRMED" },
|
||||
],
|
||||
});
|
||||
|
||||
// Trip 3 (Gede) — 4 peserta
|
||||
await prisma.tripParticipant.createMany({
|
||||
data: [
|
||||
{ tripId: trip3.id, userId: user1.id, status: "CONFIRMED" },
|
||||
{ tripId: trip3.id, userId: user2.id, status: "CONFIRMED" },
|
||||
{ tripId: trip3.id, userId: user3.id, status: "CONFIRMED" },
|
||||
{ tripId: trip3.id, userId: user4.id, status: "CONFIRMED" },
|
||||
],
|
||||
});
|
||||
|
||||
// Trip 4 (Tangkuban Parahu) — 5 peserta
|
||||
await prisma.tripParticipant.createMany({
|
||||
data: [
|
||||
{ tripId: trip4.id, userId: user1.id, status: "CONFIRMED" },
|
||||
{ tripId: trip4.id, userId: user2.id, status: "CONFIRMED" },
|
||||
{ tripId: trip4.id, userId: user3.id, status: "CONFIRMED" },
|
||||
{ tripId: trip4.id, userId: user4.id, status: "CONFIRMED" },
|
||||
{ tripId: trip4.id, userId: organizer1.id, status: "CONFIRMED" },
|
||||
],
|
||||
});
|
||||
|
||||
// Trip 5 (Malabar) — 1 peserta
|
||||
await prisma.tripParticipant.createMany({
|
||||
data: [
|
||||
{ tripId: trip5.id, userId: user2.id, status: "CONFIRMED" },
|
||||
],
|
||||
});
|
||||
|
||||
// Trip 6 (Guntur) — belum ada peserta
|
||||
|
||||
console.log("✅ Participants joined trips");
|
||||
console.log(" Papandayan: 3/10 peserta");
|
||||
console.log(" Ciremai: 2/8 peserta");
|
||||
console.log(" Gede: 4/12 peserta");
|
||||
console.log(" Tangkuban Parahu: 5/15 peserta");
|
||||
console.log(" Malabar: 1/10 peserta");
|
||||
console.log(" Guntur: 0/8 peserta\n");
|
||||
console.log("✅ Participants joined");
|
||||
console.log(" Papandayan: 4/10 | Ciremai: 2/8 | Gede: 5/12");
|
||||
console.log(" Tangkuban Parahu: 5/15 | Malabar: 2/10 | Guntur: 0/8\n");
|
||||
|
||||
console.log("🎉 Seed complete!");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user