diff --git a/app/generated/prisma/commonInputTypes.ts b/app/generated/prisma/commonInputTypes.ts index 8d61325..fbbca32 100644 --- a/app/generated/prisma/commonInputTypes.ts +++ b/app/generated/prisma/commonInputTypes.ts @@ -192,6 +192,13 @@ export type EnumVerificationStatusWithAggregatesFilter<$PrismaModel = never> = { _max?: Prisma.NestedEnumVerificationStatusFilter<$PrismaModel> } +export type EnumActivityCategoryFilter<$PrismaModel = never> = { + equals?: $Enums.ActivityCategory | Prisma.EnumActivityCategoryFieldRefInput<$PrismaModel> + in?: $Enums.ActivityCategory[] | Prisma.ListEnumActivityCategoryFieldRefInput<$PrismaModel> + notIn?: $Enums.ActivityCategory[] | Prisma.ListEnumActivityCategoryFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumActivityCategoryFilter<$PrismaModel> | $Enums.ActivityCategory +} + export type IntFilter<$PrismaModel = never> = { equals?: number | Prisma.IntFieldRefInput<$PrismaModel> in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> @@ -210,6 +217,16 @@ export type EnumTripStatusFilter<$PrismaModel = never> = { not?: Prisma.NestedEnumTripStatusFilter<$PrismaModel> | $Enums.TripStatus } +export type EnumActivityCategoryWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.ActivityCategory | Prisma.EnumActivityCategoryFieldRefInput<$PrismaModel> + in?: $Enums.ActivityCategory[] | Prisma.ListEnumActivityCategoryFieldRefInput<$PrismaModel> + notIn?: $Enums.ActivityCategory[] | Prisma.ListEnumActivityCategoryFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumActivityCategoryWithAggregatesFilter<$PrismaModel> | $Enums.ActivityCategory + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumActivityCategoryFilter<$PrismaModel> + _max?: Prisma.NestedEnumActivityCategoryFilter<$PrismaModel> +} + export type IntWithAggregatesFilter<$PrismaModel = never> = { equals?: number | Prisma.IntFieldRefInput<$PrismaModel> in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> @@ -444,6 +461,13 @@ export type NestedEnumVerificationStatusWithAggregatesFilter<$PrismaModel = neve _max?: Prisma.NestedEnumVerificationStatusFilter<$PrismaModel> } +export type NestedEnumActivityCategoryFilter<$PrismaModel = never> = { + equals?: $Enums.ActivityCategory | Prisma.EnumActivityCategoryFieldRefInput<$PrismaModel> + in?: $Enums.ActivityCategory[] | Prisma.ListEnumActivityCategoryFieldRefInput<$PrismaModel> + notIn?: $Enums.ActivityCategory[] | Prisma.ListEnumActivityCategoryFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumActivityCategoryFilter<$PrismaModel> | $Enums.ActivityCategory +} + export type NestedEnumTripStatusFilter<$PrismaModel = never> = { equals?: $Enums.TripStatus | Prisma.EnumTripStatusFieldRefInput<$PrismaModel> in?: $Enums.TripStatus[] | Prisma.ListEnumTripStatusFieldRefInput<$PrismaModel> @@ -451,6 +475,16 @@ export type NestedEnumTripStatusFilter<$PrismaModel = never> = { not?: Prisma.NestedEnumTripStatusFilter<$PrismaModel> | $Enums.TripStatus } +export type NestedEnumActivityCategoryWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.ActivityCategory | Prisma.EnumActivityCategoryFieldRefInput<$PrismaModel> + in?: $Enums.ActivityCategory[] | Prisma.ListEnumActivityCategoryFieldRefInput<$PrismaModel> + notIn?: $Enums.ActivityCategory[] | Prisma.ListEnumActivityCategoryFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumActivityCategoryWithAggregatesFilter<$PrismaModel> | $Enums.ActivityCategory + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumActivityCategoryFilter<$PrismaModel> + _max?: Prisma.NestedEnumActivityCategoryFilter<$PrismaModel> +} + export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { equals?: number | Prisma.IntFieldRefInput<$PrismaModel> in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> diff --git a/app/generated/prisma/enums.ts b/app/generated/prisma/enums.ts index 864c594..2996c73 100644 --- a/app/generated/prisma/enums.ts +++ b/app/generated/prisma/enums.ts @@ -28,6 +28,22 @@ export const TripStatus = { export type TripStatus = (typeof TripStatus)[keyof typeof TripStatus] +export const ActivityCategory = { + HIKING: 'HIKING', + CAMPING: 'CAMPING', + SNORKELING: 'SNORKELING', + DIVING: 'DIVING', + ISLAND_HOPPING: 'ISLAND_HOPPING', + CITY_TRIP: 'CITY_TRIP', + CULINARY: 'CULINARY', + CONCERT: 'CONCERT', + WORKSHOP: 'WORKSHOP', + RETREAT: 'RETREAT' +} as const + +export type ActivityCategory = (typeof ActivityCategory)[keyof typeof ActivityCategory] + + export const ParticipantStatus = { PENDING: 'PENDING', CONFIRMED: 'CONFIRMED', diff --git a/app/generated/prisma/internal/class.ts b/app/generated/prisma/internal/class.ts index e703df2..93ad4d1 100644 --- a/app/generated/prisma/internal/class.ts +++ b/app/generated/prisma/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../app/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(cuid())\n name String\n email String @unique\n /// Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).\n password String?\n image String?\n /// Diisi PrismaAdapter NextAuth saat email diverifikasi provider OAuth (Google selalu sudah verified).\n emailVerified DateTime?\n /// Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedTermsAndPrivacy Boolean @default(false)\n /// Waktu user menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n accounts Account[]\n trips Trip[]\n participations TripParticipant[]\n tripReviews TripReview[]\n\n organizerVerification OrganizerVerification? @relation(\"OrganizerVerificationOwner\")\n reviewedVerifications OrganizerVerification[] @relation(\"OrganizerVerificationReviewer\")\n}\n\n/// Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.\n/// Session tidak pakai DB — kita pakai JWT, jadi Session/VerificationToken tidak perlu.\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel OrganizerVerification {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(\"OrganizerVerificationOwner\", fields: [userId], references: [id], onDelete: Cascade)\n\n /// Nama lengkap sesuai KTP\n fullName String\n /// NIK terenkripsi (AES-256-GCM, base64). Plaintext tidak disimpan.\n nikEncrypted String\n /// HMAC-SHA256(NIK + pepper) untuk uniqueness lookup tanpa membuka plaintext.\n nikHash String @unique\n birthDate DateTime\n address String\n\n /// Storage key foto KTP (mis. `ktp/.jpg`). File disimpan terenkripsi di luar /public.\n ktpImageKey String\n /// Storage key selfie memegang KTP.\n selfieKey String\n\n bankName String\n bankAccountNumber String\n bankAccountName String\n\n status VerificationStatus @default(PENDING)\n rejectionReason String?\n reviewedAt DateTime?\n reviewedById String?\n reviewedBy User? @relation(\"OrganizerVerificationReviewer\", fields: [reviewedById], references: [id])\n verifiedAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum VerificationStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\nmodel Trip {\n id String @id @default(cuid())\n title String\n description String?\n mountain String\n location String\n /// Titik kumpul / meeting point (teks bebas)\n meetingPoint String?\n /// Itinerary hari per hari (teks bebas, bullet OK)\n itinerary String?\n /// Yang termasuk harga (teks bebas)\n whatsIncluded String?\n /// Yang tidak termasuk (teks bebas)\n whatsExcluded String?\n date DateTime\n endDate DateTime?\n maxParticipants Int\n price Int\n status TripStatus @default(OPEN)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n organizerId String\n organizer User @relation(fields: [organizerId], references: [id])\n\n participants TripParticipant[]\n images TripImage[]\n reviews TripReview[]\n}\n\nmodel TripReview {\n id String @id @default(cuid())\n rating Int\n comment String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([tripId, userId])\n}\n\nmodel TripImage {\n id String @id @default(cuid())\n url String\n caption String?\n order Int @default(0)\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n}\n\nmodel TripParticipant {\n id String @id @default(cuid())\n status ParticipantStatus @default(PENDING)\n createdAt DateTime @default(now())\n /// Peserta menekan \"Saya sudah bayar\" (pembayaran manual)\n markedPaidAt DateTime?\n /// Organizer mengonfirmasi uang sudah masuk\n paymentConfirmedAt DateTime?\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n\n userId String\n user User @relation(fields: [userId], references: [id])\n\n @@unique([tripId, userId])\n}\n\nenum TripStatus {\n OPEN\n FULL\n CLOSED\n COMPLETED\n}\n\nenum ParticipantStatus {\n PENDING\n CONFIRMED\n CANCELLED\n}\n", + "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../app/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(cuid())\n name String\n email String @unique\n /// Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).\n password String?\n image String?\n /// Diisi PrismaAdapter NextAuth saat email diverifikasi provider OAuth (Google selalu sudah verified).\n emailVerified DateTime?\n /// Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedTermsAndPrivacy Boolean @default(false)\n /// Waktu user menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n accounts Account[]\n trips Trip[]\n participations TripParticipant[]\n tripReviews TripReview[]\n\n organizerVerification OrganizerVerification? @relation(\"OrganizerVerificationOwner\")\n reviewedVerifications OrganizerVerification[] @relation(\"OrganizerVerificationReviewer\")\n}\n\n/// Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.\n/// Session tidak pakai DB — kita pakai JWT, jadi Session/VerificationToken tidak perlu.\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel OrganizerVerification {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(\"OrganizerVerificationOwner\", fields: [userId], references: [id], onDelete: Cascade)\n\n /// Nama lengkap sesuai KTP\n fullName String\n /// NIK terenkripsi (AES-256-GCM, base64). Plaintext tidak disimpan.\n nikEncrypted String\n /// HMAC-SHA256(NIK + pepper) untuk uniqueness lookup tanpa membuka plaintext.\n nikHash String @unique\n birthDate DateTime\n address String\n\n /// Storage key foto KTP (mis. `ktp/.jpg`). File disimpan terenkripsi di luar /public.\n ktpImageKey String\n /// Storage key selfie memegang KTP.\n selfieKey String\n\n bankName String\n bankAccountNumber String\n bankAccountName String\n\n status VerificationStatus @default(PENDING)\n rejectionReason String?\n reviewedAt DateTime?\n reviewedById String?\n reviewedBy User? @relation(\"OrganizerVerificationReviewer\", fields: [reviewedById], references: [id])\n verifiedAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum VerificationStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\nmodel Trip {\n id String @id @default(cuid())\n title String\n description String?\n /// Kategori aktivitas.\n category ActivityCategory @default(HIKING)\n /// Destinasi/subjek aktivitas — interpretasinya tergantung kategori (gunung untuk HIKING, spot untuk DIVING, venue untuk CONCERT, tema untuk WORKSHOP, dst).\n destination String\n location String\n /// Titik kumpul / meeting point (teks bebas)\n meetingPoint String?\n /// Itinerary hari per hari (teks bebas, bullet OK)\n itinerary String?\n /// Yang termasuk harga (teks bebas)\n whatsIncluded String?\n /// Yang tidak termasuk (teks bebas)\n whatsExcluded String?\n date DateTime\n endDate DateTime?\n maxParticipants Int\n price Int\n status TripStatus @default(OPEN)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n organizerId String\n organizer User @relation(fields: [organizerId], references: [id])\n\n participants TripParticipant[]\n images TripImage[]\n reviews TripReview[]\n\n @@index([category, status, date])\n}\n\nmodel TripReview {\n id String @id @default(cuid())\n rating Int\n comment String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([tripId, userId])\n}\n\nmodel TripImage {\n id String @id @default(cuid())\n url String\n caption String?\n order Int @default(0)\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n}\n\nmodel TripParticipant {\n id String @id @default(cuid())\n status ParticipantStatus @default(PENDING)\n createdAt DateTime @default(now())\n /// Peserta menekan \"Saya sudah bayar\" (pembayaran manual)\n markedPaidAt DateTime?\n /// Organizer mengonfirmasi uang sudah masuk\n paymentConfirmedAt DateTime?\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n\n userId String\n user User @relation(fields: [userId], references: [id])\n\n @@unique([tripId, userId])\n}\n\nenum TripStatus {\n OPEN\n FULL\n CLOSED\n COMPLETED\n}\n\nenum ActivityCategory {\n HIKING\n CAMPING\n SNORKELING\n DIVING\n ISLAND_HOPPING\n CITY_TRIP\n CULINARY\n CONCERT\n WORKSHOP\n RETREAT\n}\n\nenum ParticipantStatus {\n PENDING\n CONFIRMED\n CANCELLED\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -32,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"acceptedTermsAndPrivacy\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"trips\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToUser\"},{\"name\":\"participations\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripParticipantToUser\"},{\"name\":\"tripReviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripReviewToUser\"},{\"name\":\"organizerVerification\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"reviewedVerifications\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationReviewer\"}],\"dbName\":null},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refresh_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"token_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"id_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":null},\"OrganizerVerification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikEncrypted\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ktpImageKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"selfieKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VerificationStatus\"},{\"name\":\"rejectionReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"reviewedById\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedBy\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationReviewer\"},{\"name\":\"verifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Trip\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mountain\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"location\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"meetingPoint\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"itinerary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsIncluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsExcluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"maxParticipants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"TripStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"organizerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripToUser\"},{\"name\":\"participants\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"images\",\"kind\":\"object\",\"type\":\"TripImage\",\"relationName\":\"TripToTripImage\"},{\"name\":\"reviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripToTripReview\"}],\"dbName\":null},\"TripReview\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rating\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"comment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripReview\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripReviewToUser\"}],\"dbName\":null},\"TripImage\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"caption\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripImage\"}],\"dbName\":null},\"TripParticipant\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ParticipantStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"markedPaidAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paymentConfirmedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripParticipantToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"acceptedTermsAndPrivacy\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"trips\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToUser\"},{\"name\":\"participations\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripParticipantToUser\"},{\"name\":\"tripReviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripReviewToUser\"},{\"name\":\"organizerVerification\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"reviewedVerifications\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationReviewer\"}],\"dbName\":null},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refresh_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"token_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"id_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":null},\"OrganizerVerification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikEncrypted\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ktpImageKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"selfieKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VerificationStatus\"},{\"name\":\"rejectionReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"reviewedById\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedBy\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationReviewer\"},{\"name\":\"verifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Trip\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"enum\",\"type\":\"ActivityCategory\"},{\"name\":\"destination\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"location\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"meetingPoint\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"itinerary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsIncluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsExcluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"maxParticipants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"TripStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"organizerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripToUser\"},{\"name\":\"participants\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"images\",\"kind\":\"object\",\"type\":\"TripImage\",\"relationName\":\"TripToTripImage\"},{\"name\":\"reviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripToTripReview\"}],\"dbName\":null},\"TripReview\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rating\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"comment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripReview\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripReviewToUser\"}],\"dbName\":null},\"TripImage\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"caption\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripImage\"}],\"dbName\":null},\"TripParticipant\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ParticipantStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"markedPaidAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paymentConfirmedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripParticipantToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"organizer\",\"trip\",\"participants\",\"images\",\"reviews\",\"_count\",\"trips\",\"participations\",\"tripReviews\",\"reviewedBy\",\"organizerVerification\",\"reviewedVerifications\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"_avg\",\"_sum\",\"Account.groupBy\",\"Account.aggregate\",\"OrganizerVerification.findUnique\",\"OrganizerVerification.findUniqueOrThrow\",\"OrganizerVerification.findFirst\",\"OrganizerVerification.findFirstOrThrow\",\"OrganizerVerification.findMany\",\"OrganizerVerification.createOne\",\"OrganizerVerification.createMany\",\"OrganizerVerification.createManyAndReturn\",\"OrganizerVerification.updateOne\",\"OrganizerVerification.updateMany\",\"OrganizerVerification.updateManyAndReturn\",\"OrganizerVerification.upsertOne\",\"OrganizerVerification.deleteOne\",\"OrganizerVerification.deleteMany\",\"OrganizerVerification.groupBy\",\"OrganizerVerification.aggregate\",\"Trip.findUnique\",\"Trip.findUniqueOrThrow\",\"Trip.findFirst\",\"Trip.findFirstOrThrow\",\"Trip.findMany\",\"Trip.createOne\",\"Trip.createMany\",\"Trip.createManyAndReturn\",\"Trip.updateOne\",\"Trip.updateMany\",\"Trip.updateManyAndReturn\",\"Trip.upsertOne\",\"Trip.deleteOne\",\"Trip.deleteMany\",\"Trip.groupBy\",\"Trip.aggregate\",\"TripReview.findUnique\",\"TripReview.findUniqueOrThrow\",\"TripReview.findFirst\",\"TripReview.findFirstOrThrow\",\"TripReview.findMany\",\"TripReview.createOne\",\"TripReview.createMany\",\"TripReview.createManyAndReturn\",\"TripReview.updateOne\",\"TripReview.updateMany\",\"TripReview.updateManyAndReturn\",\"TripReview.upsertOne\",\"TripReview.deleteOne\",\"TripReview.deleteMany\",\"TripReview.groupBy\",\"TripReview.aggregate\",\"TripImage.findUnique\",\"TripImage.findUniqueOrThrow\",\"TripImage.findFirst\",\"TripImage.findFirstOrThrow\",\"TripImage.findMany\",\"TripImage.createOne\",\"TripImage.createMany\",\"TripImage.createManyAndReturn\",\"TripImage.updateOne\",\"TripImage.updateMany\",\"TripImage.updateManyAndReturn\",\"TripImage.upsertOne\",\"TripImage.deleteOne\",\"TripImage.deleteMany\",\"TripImage.groupBy\",\"TripImage.aggregate\",\"TripParticipant.findUnique\",\"TripParticipant.findUniqueOrThrow\",\"TripParticipant.findFirst\",\"TripParticipant.findFirstOrThrow\",\"TripParticipant.findMany\",\"TripParticipant.createOne\",\"TripParticipant.createMany\",\"TripParticipant.createManyAndReturn\",\"TripParticipant.updateOne\",\"TripParticipant.updateMany\",\"TripParticipant.updateManyAndReturn\",\"TripParticipant.upsertOne\",\"TripParticipant.deleteOne\",\"TripParticipant.deleteMany\",\"TripParticipant.groupBy\",\"TripParticipant.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"ParticipantStatus\",\"status\",\"createdAt\",\"markedPaidAt\",\"paymentConfirmedAt\",\"tripId\",\"userId\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"url\",\"caption\",\"order\",\"rating\",\"comment\",\"updatedAt\",\"title\",\"description\",\"mountain\",\"location\",\"meetingPoint\",\"itinerary\",\"whatsIncluded\",\"whatsExcluded\",\"date\",\"endDate\",\"maxParticipants\",\"price\",\"TripStatus\",\"organizerId\",\"fullName\",\"nikEncrypted\",\"nikHash\",\"birthDate\",\"address\",\"ktpImageKey\",\"selfieKey\",\"bankName\",\"bankAccountNumber\",\"bankAccountName\",\"VerificationStatus\",\"rejectionReason\",\"reviewedAt\",\"reviewedById\",\"verifiedAt\",\"type\",\"provider\",\"providerAccountId\",\"refresh_token\",\"access_token\",\"expires_at\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"name\",\"email\",\"password\",\"image\",\"emailVerified\",\"acceptedTermsAndPrivacy\",\"acceptedAt\",\"every\",\"some\",\"none\",\"tripId_userId\",\"provider_providerAccountId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "8QNDcBMEAAD1AQAgCwAA9gEAIAwAAPcBACANAAD4AQAgDwAA-QEAIBAAAPoBACCJAQAA8wEAMIoBAAAeABCLAQAA8wEAMIwBAQAAAAGPAUAA7QEAIaQBQADtAQAhzAEBAOwBACHNAQEAAAABzgEBAO8BACHPAQEA7wEAIdABQADwAQAh0QEgAPQBACHSAUAA8AEAIQEAAAABACAQAwAA8QEAIIkBAACHAgAwigEAAAMAEIsBAACHAgAwjAEBAOwBACGTAQEA7AEAIcIBAQDsAQAhwwEBAOwBACHEAQEA7AEAIcUBAQDvAQAhxgEBAO8BACHHAQIAiAIAIcgBAQDvAQAhyQEBAO8BACHKAQEA7wEAIcsBAQDvAQAhCAMAALoDACDFAQAAiQIAIMYBAACJAgAgxwEAAIkCACDIAQAAiQIAIMkBAACJAgAgygEAAIkCACDLAQAAiQIAIBEDAADxAQAgiQEAAIcCADCKAQAAAwAQiwEAAIcCADCMAQEAAAABkwEBAOwBACHCAQEA7AEAIcMBAQDsAQAhxAEBAOwBACHFAQEA7wEAIcYBAQDvAQAhxwECAIgCACHIAQEA7wEAIckBAQDvAQAhygEBAO8BACHLAQEA7wEAIdcBAACGAgAgAwAAAAMAIAEAAAQAMAIAAAUAIBgFAADxAQAgBwAA9wEAIAgAAIUCACAJAAD4AQAgiQEAAIMCADCKAQAABwAQiwEAAIMCADCMAQEA7AEAIY4BAACEArIBIo8BQADtAQAhpAFAAO0BACGlAQEA7AEAIaYBAQDvAQAhpwEBAOwBACGoAQEA7AEAIakBAQDvAQAhqgEBAO8BACGrAQEA7wEAIawBAQDvAQAhrQFAAO0BACGuAUAA8AEAIa8BAgD9AQAhsAECAP0BACGyAQEA7AEAIQoFAAC6AwAgBwAAtgMAIAgAALwDACAJAAC3AwAgpgEAAIkCACCpAQAAiQIAIKoBAACJAgAgqwEAAIkCACCsAQAAiQIAIK4BAACJAgAgGAUAAPEBACAHAAD3AQAgCAAAhQIAIAkAAPgBACCJAQAAgwIAMIoBAAAHABCLAQAAgwIAMIwBAQAAAAGOAQAAhAKyASKPAUAA7QEAIaQBQADtAQAhpQEBAOwBACGmAQEA7wEAIacBAQDsAQAhqAEBAOwBACGpAQEA7wEAIaoBAQDvAQAhqwEBAO8BACGsAQEA7wEAIa0BQADtAQAhrgFAAPABACGvAQIA_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_AUAAAAABwAEBAAAAAcEBQAAAAAEBFgAAWwAwARYAAFsAMAEAAAAeACAVAwAA3QIAIA4AAN4CACCMAQEAjQIAIY4BAADcAr4BIo8BQACPAgAhkwEBAI0CACGkAUAAjwIAIbMBAQCNAgAhtAEBAI0CACG1AQEAjQIAIbYBQACPAgAhtwEBAI0CACG4AQEAjQIAIbkBAQCNAgAhugEBAI0CACG7AQEAjQIAIbwBAQCNAgAhvgEBAJoCACG_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_AUAAyAEAIcABAQDUAQAhwQFAAMgBACEHCgAAzQEAICMAAOIBACAkAADiAQAglAEAAAC-AQKVAQAAAL4BCJYBAAAAvgEImwEAAOEBvgEiBwoAAM0BACAjAADiAQAgJAAA4gEAIJQBAAAAvgEClQEAAAC-AQiWAQAAAL4BCJsBAADhAb4BIgSUAQAAAL4BApUBAAAAvgEIlgEAAAC-AQibAQAA4gG-ASIPiQEAAOMBADCKAQAAUQAQiwEAAOMBADCMAQEAxQEAIZMBAQDFAQAhwgEBAMUBACHDAQEAxQEAIcQBAQDFAQAhxQEBANQBACHGAQEA1AEAIccBAgDkAQAhyAEBANQBACHJAQEA1AEAIcoBAQDUAQAhywEBANQBACENCgAAygEAICMAAMoBACAkAADKAQAgNQAA5gEAIDYAAMoBACCUAQIAAAABlQECAAAABZYBAgAAAAWXAQIAAAABmAECAAAAAZkBAgAAAAGaAQIAAAABmwECAOUBACENCgAAygEAICMAAMoBACAkAADKAQAgNQAA5gEAIDYAAMoBACCUAQIAAAABlQECAAAABZYBAgAAAAWXAQIAAAABmAECAAAAAZkBAgAAAAGaAQIAAAABmwECAOUBACEIlAEIAAAAAZUBCAAAAAWWAQgAAAAFlwEIAAAAAZgBCAAAAAGZAQgAAAABmgEIAAAAAZsBCADmAQAhDYkBAADnAQAwigEAADsAEIsBAADnAQAwjAEBAMUBACGPAUAAxwEAIaQBQADHAQAhzAEBAMUBACHNAQEAxQEAIc4BAQDUAQAhzwEBANQBACHQAUAAyAEAIdEBIADoAQAh0gFAAMgBACEFCgAAzQEAICMAAOoBACAkAADqAQAglAEgAAAAAZsBIADpAQAhBQoAAM0BACAjAADqAQAgJAAA6gEAIJQBIAAAAAGbASAA6QEAIQKUASAAAAABmwEgAOoBACEYAwAA8QEAIA4AAPIBACCJAQAA6wEAMIoBAAAcABCLAQAA6wEAMIwBAQDsAQAhjgEAAO4BvgEijwFAAO0BACGTAQEA7AEAIaQBQADtAQAhswEBAOwBACG0AQEA7AEAIbUBAQDsAQAhtgFAAO0BACG3AQEA7AEAIbgBAQDsAQAhuQEBAOwBACG6AQEA7AEAIbsBAQDsAQAhvAEBAOwBACG-AQEA7wEAIb8BQADwAQAhwAEBAO8BACHBAUAA8AEAIQuUAQEAAAABlQEBAAAABJYBAQAAAASXAQEAAAABmAEBAAAAAZkBAQAAAAGaAQEAAAABmwEBANIBACGcAQEAAAABnQEBAAAAAZ4BAQAAAAEIlAFAAAAAAZUBQAAAAASWAUAAAAAElwFAAAAAAZgBQAAAAAGZAUAAAAABmgFAAAAAAZsBQADOAQAhBJQBAAAAvgEClQEAAAC-AQiWAQAAAL4BCJsBAADiAb4BIguUAQEAAAABlQEBAAAABZYBAQAAAAWXAQEAAAABmAEBAAAAAZkBAQAAAAGaAQEAAAABmwEBANkBACGcAQEAAAABnQEBAAAAAZ4BAQAAAAEIlAFAAAAAAZUBQAAAAAWWAUAAAAAFlwFAAAAAAZgBQAAAAAGZAUAAAAABmgFAAAAAAZsBQADLAQAhFQQAAPUBACALAAD2AQAgDAAA9wEAIA0AAPgBACAPAAD5AQAgEAAA-gEAIIkBAADzAQAwigEAAB4AEIsBAADzAQAwjAEBAOwBACGPAUAA7QEAIaQBQADtAQAhzAEBAOwBACHNAQEA7AEAIc4BAQDvAQAhzwEBAO8BACHQAUAA8AEAIdEBIAD0AQAh0gFAAPABACHYAQAAHgAg2QEAAB4AIBUEAAD1AQAgCwAA9gEAIAwAAPcBACANAAD4AQAgDwAA-QEAIBAAAPoBACCJAQAA8wEAMIoBAAAeABCLAQAA8wEAMIwBAQDsAQAhjwFAAO0BACGkAUAA7QEAIcwBAQDsAQAhzQEBAOwBACHOAQEA7wEAIc8BAQDvAQAh0AFAAPABACHRASAA9AEAIdIBQADwAQAh2AEAAB4AINkBAAAeACATBAAA9QEAIAsAAPYBACAMAAD3AQAgDQAA-AEAIA8AAPkBACAQAAD6AQAgiQEAAPMBADCKAQAAHgAQiwEAAPMBADCMAQEA7AEAIY8BQADtAQAhpAFAAO0BACHMAQEA7AEAIc0BAQDsAQAhzgEBAO8BACHPAQEA7wEAIdABQADwAQAh0QEgAPQBACHSAUAA8AEAIQKUASAAAAABmwEgAOoBACED0wEAAAMAINQBAAADACDVAQAAAwAgA9MBAAAHACDUAQAABwAg1QEAAAcAIAPTAQAACwAg1AEAAAsAINUBAAALACAD0wEAABMAINQBAAATACDVAQAAEwAgGgMAAPEBACAOAADyAQAgiQEAAOsBADCKAQAAHAAQiwEAAOsBADCMAQEA7AEAIY4BAADuAb4BIo8BQADtAQAhkwEBAOwBACGkAUAA7QEAIbMBAQDsAQAhtAEBAOwBACG1AQEA7AEAIbYBQADtAQAhtwEBAOwBACG4AQEA7AEAIbkBAQDsAQAhugEBAOwBACG7AQEA7AEAIbwBAQDsAQAhvgEBAO8BACG_AUAA8AEAIcABAQDvAQAhwQFAAPABACHYAQAAHAAg2QEAABwAIAPTAQAAHAAg1AEAABwAINUBAAAcACACkgEBAAAAAZMBAQAAAAEMAwAA8QEAIAYAAP4BACCJAQAA_AEAMIoBAAATABCLAQAA_AEAMIwBAQDsAQAhjwFAAO0BACGSAQEA7AEAIZMBAQDsAQAhogECAP0BACGjAQEA7wEAIaQBQADtAQAhCJQBAgAAAAGVAQIAAAAElgECAAAABJcBAgAAAAGYAQIAAAABmQECAAAAAZoBAgAAAAGbAQIAzQEAIRoFAADxAQAgBwAA9wEAIAgAAIUCACAJAAD4AQAgiQEAAIMCADCKAQAABwAQiwEAAIMCADCMAQEA7AEAIY4BAACEArIBIo8BQADtAQAhpAFAAO0BACGlAQEA7AEAIaYBAQDvAQAhpwEBAOwBACGoAQEA7AEAIakBAQDvAQAhqgEBAO8BACGrAQEA7wEAIawBAQDvAQAhrQFAAO0BACGuAUAA8AEAIa8BAgD9AQAhsAECAP0BACGyAQEA7AEAIdgBAAAHACDZAQAABwAgCQYAAP4BACCJAQAA_wEAMIoBAAAPABCLAQAA_wEAMIwBAQDsAQAhkgEBAOwBACGfAQEA7AEAIaABAQDvAQAhoQECAP0BACECkgEBAAAAAZMBAQAAAAEMAwAA8QEAIAYAAP4BACCJAQAAgQIAMIoBAAALABCLAQAAgQIAMIwBAQDsAQAhjgEAAIICjgEijwFAAO0BACGQAUAA8AEAIZEBQADwAQAhkgEBAOwBACGTAQEA7AEAIQSUAQAAAI4BApUBAAAAjgEIlgEAAACOAQibAQAA0AGOASIYBQAA8QEAIAcAAPcBACAIAACFAgAgCQAA-AEAIIkBAACDAgAwigEAAAcAEIsBAACDAgAwjAEBAOwBACGOAQAAhAKyASKPAUAA7QEAIaQBQADtAQAhpQEBAOwBACGmAQEA7wEAIacBAQDsAQAhqAEBAOwBACGpAQEA7wEAIaoBAQDvAQAhqwEBAO8BACGsAQEA7wEAIa0BQADtAQAhrgFAAPABACGvAQIA_QEAIbABAgD9AQAhsgEBAOwBACEElAEAAACyAQKVAQAAALIBCJYBAAAAsgEImwEAAN4BsgEiA9MBAAAPACDUAQAADwAg1QEAAA8AIALDAQEAAAABxAEBAAAAARADAADxAQAgiQEAAIcCADCKAQAAAwAQiwEAAIcCADCMAQEA7AEAIZMBAQDsAQAhwgEBAOwBACHDAQEA7AEAIcQBAQDsAQAhxQEBAO8BACHGAQEA7wEAIccBAgCIAgAhyAEBAO8BACHJAQEA7wEAIcoBAQDvAQAhywEBAO8BACEIlAECAAAAAZUBAgAAAAWWAQIAAAAFlwECAAAAAZgBAgAAAAGZAQIAAAABmgECAAAAAZsBAgDKAQAhAAAAAAHdAQEAAAABAd0BAAAAjgECAd0BQAAAAAEB3QFAAAAAAQUdAADqAwAgHgAA8AMAINoBAADrAwAg2wEAAO8DACDgAQAACQAgBR0AAOgDACAeAADtAwAg2gEAAOkDACDbAQAA7AMAIOABAAABACADHQAA6gMAINoBAADrAwAg4AEAAAkAIAMdAADoAwAg2gEAAOkDACDgAQAAAQAgAAAAAAAB3QEBAAAAAQXdAQIAAAAB4wECAAAAAeQBAgAAAAHlAQIAAAAB5gECAAAAAQUdAADjAwAgHgAA5gMAINoBAADkAwAg2wEAAOUDACDgAQAACQAgAx0AAOMDACDaAQAA5AMAIOABAAAJACAAAAAAAAUdAADbAwAgHgAA4QMAINoBAADcAwAg2wEAAOADACDgAQAACQAgBR0AANkDACAeAADeAwAg2gEAANoDACDbAQAA3QMAIOABAAABACADHQAA2wMAINoBAADcAwAg4AEAAAkAIAMdAADZAwAg2gEAANoDACDgAQAAAQAgAAAAAAAB3QEAAACyAQIFHQAA0QMAIB4AANcDACDaAQAA0gMAINsBAADWAwAg4AEAAAEAIAsdAADJAgAwHgAAzgIAMNoBAADKAgAw2wEAAMsCADDcAQAAzAIAIN0BAADNAgAw3gEAAM0CADDfAQAAzQIAMOABAADNAgAw4QEAAM8CADDiAQAA0AIAMAsdAAC9AgAwHgAAwgIAMNoBAAC-AgAw2wEAAL8CADDcAQAAwAIAIN0BAADBAgAw3gEAAMECADDfAQAAwQIAMOABAADBAgAw4QEAAMMCADDiAQAAxAIAMAsdAACxAgAwHgAAtgIAMNoBAACyAgAw2wEAALMCADDcAQAAtAIAIN0BAAC1AgAw3gEAALUCADDfAQAAtQIAMOABAAC1AgAw4QEAALcCADDiAQAAuAIAMAcDAACmAgAgjAEBAAAAAY8BQAAAAAGTAQEAAAABogECAAAAAaMBAQAAAAGkAUAAAAABAgAAABUAIB0AALwCACADAAAAFQAgHQAAvAIAIB4AALsCACABFgAA1QMAMA0DAADxAQAgBgAA_gEAIIkBAAD8AQAwigEAABMAEIsBAAD8AQAwjAEBAAAAAY8BQADtAQAhkgEBAOwBACGTAQEA7AEAIaIBAgD9AQAhowEBAO8BACGkAUAA7QEAIdYBAAD7AQAgAgAAABUAIBYAALsCACACAAAAuQIAIBYAALoCACAKiQEAALgCADCKAQAAuQIAEIsBAAC4AgAwjAEBAOwBACGPAUAA7QEAIZIBAQDsAQAhkwEBAOwBACGiAQIA_QEAIaMBAQDvAQAhpAFAAO0BACEKiQEAALgCADCKAQAAuQIAEIsBAAC4AgAwjAEBAOwBACGPAUAA7QEAIZIBAQDsAQAhkwEBAOwBACGiAQIA_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_AgAgHgAAggMAINoBAACAAwAg2wEAAIEDACDeAQAAHAAg3wEAABwAIOABAAAhACALHQAA8wIAMB4AAPgCADDaAQAA9AIAMNsBAAD1AgAw3AEAAPYCACDdAQAA9wIAMN4BAAD3AgAw3wEAAPcCADDgAQAA9wIAMOEBAAD5AgAw4gEAAPoCADATAwAA3wIAIIwBAQAAAAGOAQAAAL4BAo8BQAAAAAGTAQEAAAABpAFAAAAAAbMBAQAAAAG0AQEAAAABtQEBAAAAAbYBQAAAAAG3AQEAAAABuAEBAAAAAbkBAQAAAAG6AQEAAAABuwEBAAAAAbwBAQAAAAG-AQEAAAABvwFAAAAAAcEBQAAAAAECAAAAIQAgHQAA_gIAIAMAAAAhACAdAAD-AgAgHgAA_QIAIAEWAADBAwAwGAMAAPEBACAOAADyAQAgiQEAAOsBADCKAQAAHAAQiwEAAOsBADCMAQEAAAABjgEAAO4BvgEijwFAAO0BACGTAQEAAAABpAFAAO0BACGzAQEA7AEAIbQBAQDsAQAhtQEBAAAAAbYBQADtAQAhtwEBAOwBACG4AQEA7AEAIbkBAQDsAQAhugEBAOwBACG7AQEA7AEAIbwBAQDsAQAhvgEBAO8BACG_AUAA8AEAIcABAQDvAQAhwQFAAPABACECAAAAIQAgFgAA_QIAIAIAAAD7AgAgFgAA_AIAIBaJAQAA-gIAMIoBAAD7AgAQiwEAAPoCADCMAQEA7AEAIY4BAADuAb4BIo8BQADtAQAhkwEBAOwBACGkAUAA7QEAIbMBAQDsAQAhtAEBAOwBACG1AQEA7AEAIbYBQADtAQAhtwEBAOwBACG4AQEA7AEAIbkBAQDsAQAhugEBAOwBACG7AQEA7AEAIbwBAQDsAQAhvgEBAO8BACG_AUAA8AEAIcABAQDvAQAhwQFAAPABACEWiQEAAPoCADCKAQAA-wIAEIsBAAD6AgAwjAEBAOwBACGOAQAA7gG-ASKPAUAA7QEAIZMBAQDsAQAhpAFAAO0BACGzAQEA7AEAIbQBAQDsAQAhtQEBAOwBACG2AUAA7QEAIbcBAQDsAQAhuAEBAOwBACG5AQEA7AEAIboBAQDsAQAhuwEBAOwBACG8AQEA7AEAIb4BAQDvAQAhvwFAAPABACHAAQEA7wEAIcEBQADwAQAhEowBAQCNAgAhjgEAANwCvgEijwFAAI8CACGTAQEAjQIAIaQBQACPAgAhswEBAI0CACG0AQEAjQIAIbUBAQCNAgAhtgFAAI8CACG3AQEAjQIAIbgBAQCNAgAhuQEBAI0CACG6AQEAjQIAIbsBAQCNAgAhvAEBAI0CACG-AQEAmgIAIb8BQACQAgAhwQFAAJACACETAwAA3QIAIIwBAQCNAgAhjgEAANwCvgEijwFAAI8CACGTAQEAjQIAIaQBQACPAgAhswEBAI0CACG0AQEAjQIAIbUBAQCNAgAhtgFAAI8CACG3AQEAjQIAIbgBAQCNAgAhuQEBAI0CACG6AQEAjQIAIbsBAQCNAgAhvAEBAI0CACG-AQEAmgIAIb8BQACQAgAhwQFAAJACACETAwAA3wIAIIwBAQAAAAGOAQAAAL4BAo8BQAAAAAGTAQEAAAABpAFAAAAAAbMBAQAAAAG0AQEAAAABtQEBAAAAAbYBQAAAAAG3AQEAAAABuAEBAAAAAbkBAQAAAAG6AQEAAAABuwEBAAAAAbwBAQAAAAG-AQEAAAABvwFAAAAAAcEBQAAAAAETDgAA4AIAIIwBAQAAAAGOAQAAAL4BAo8BQAAAAAGkAUAAAAABswEBAAAAAbQBAQAAAAG1AQEAAAABtgFAAAAAAbcBAQAAAAG4AQEAAAABuQEBAAAAAboBAQAAAAG7AQEAAAABvAEBAAAAAb4BAQAAAAG_AUAAAAABwAEBAAAAAcEBQAAAAAECAAAAIQAgHQAA_wIAIAMAAAAcACAdAAD_AgAgHgAAgwMAIBUAAAAcACAOAADeAgAgFgAAgwMAIIwBAQCNAgAhjgEAANwCvgEijwFAAI8CACGkAUAAjwIAIbMBAQCNAgAhtAEBAI0CACG1AQEAjQIAIbYBQACPAgAhtwEBAI0CACG4AQEAjQIAIbkBAQCNAgAhugEBAI0CACG7AQEAjQIAIbwBAQCNAgAhvgEBAJoCACG_AUAAkAIAIcABAQCaAgAhwQFAAJACACETDgAA3gIAIIwBAQCNAgAhjgEAANwCvgEijwFAAI8CACGkAUAAjwIAIbMBAQCNAgAhtAEBAI0CACG1AQEAjQIAIbYBQACPAgAhtwEBAI0CACG4AQEAjQIAIbkBAQCNAgAhugEBAI0CACG7AQEAjQIAIbwBAQCNAgAhvgEBAJoCACG_AUAAkAIAIcABAQCaAgAhwQFAAJACACEHBgAApQIAIIwBAQAAAAGPAUAAAAABkgEBAAAAAaIBAgAAAAGjAQEAAAABpAFAAAAAAQIAAAAVACAdAACMAwAgAwAAABUAIB0AAIwDACAeAACLAwAgARYAAMADADACAAAAFQAgFgAAiwMAIAIAAAC5AgAgFgAAigMAIAaMAQEAjQIAIY8BQACPAgAhkgEBAI0CACGiAQIAmwIAIaMBAQCaAgAhpAFAAI8CACEHBgAAowIAIIwBAQCNAgAhjwFAAI8CACGSAQEAjQIAIaIBAgCbAgAhowEBAJoCACGkAUAAjwIAIQcGAAClAgAgjAEBAAAAAY8BQAAAAAGSAQEAAAABogECAAAAAaMBAQAAAAGkAUAAAAABBwYAAJMCACCMAQEAAAABjgEAAACOAQKPAUAAAAABkAFAAAAAAZEBQAAAAAGSAQEAAAABAgAAAA0AIB0AAJUDACADAAAADQAgHQAAlQMAIB4AAJQDACABFgAAvwMAMAIAAAANACAWAACUAwAgAgAAANECACAWAACTAwAgBowBAQCNAgAhjgEAAI4CjgEijwFAAI8CACGQAUAAkAIAIZEBQACQAgAhkgEBAI0CACEHBgAAkQIAIIwBAQCNAgAhjgEAAI4CjgEijwFAAI8CACGQAUAAkAIAIZEBQACQAgAhkgEBAI0CACEHBgAAkwIAIIwBAQAAAAGOAQAAAI4BAo8BQAAAAAGQAUAAAAABkQFAAAAAAZIBAQAAAAETBwAA1gIAIAgAANcCACAJAADYAgAgjAEBAAAAAY4BAAAAsgECjwFAAAAAAaQBQAAAAAGlAQEAAAABpgEBAAAAAacBAQAAAAGoAQEAAAABqQEBAAAAAaoBAQAAAAGrAQEAAAABrAEBAAAAAa0BQAAAAAGuAUAAAAABrwECAAAAAbABAgAAAAECAAAACQAgHQAAoQMAIAMAAAAJACAdAAChAwAgHgAAoAMAIAEWAAC-AwAwGAUAAPEBACAHAAD3AQAgCAAAhQIAIAkAAPgBACCJAQAAgwIAMIoBAAAHABCLAQAAgwIAMIwBAQAAAAGOAQAAhAKyASKPAUAA7QEAIaQBQADtAQAhpQEBAOwBACGmAQEA7wEAIacBAQDsAQAhqAEBAOwBACGpAQEA7wEAIaoBAQDvAQAhqwEBAO8BACGsAQEA7wEAIa0BQADtAQAhrgFAAPABACGvAQIA_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_AgAg2gEAAIADACDgAQAAIQAgBB0AAPMCADDaAQAA9AIAMNwBAAD2AgAg4AEAAPcCADAAAAAABgMAALoDACAOAAC6AwAgvgEAAIkCACC_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-Wgg_XApAXRtBYAhCYgpDYxxEZQhFZghGZwpHah1IayFJbANKbQNLbgNMbwNNcANOcgNPdApQdSJRdwNSeQpTeiNUewNVfANWfQpXgAEkWIEBKlmCAQZagwEGW4QBBlyFAQZdhgEGXogBBl-KAQpgiwErYY0BBmKPAQpjkAEsZJEBBmWSAQZmkwEKZ5YBLWiXATNpmAEFapkBBWuaAQVsmwEFbZwBBW6eAQVvoAEKcKEBNHGjAQVypQEKc6YBNXSnAQV1qAEFdqkBCnesATZ4rQE8ea4BBHqvAQR7sAEEfLEBBH2yAQR-tAEEf7YBCoABtwE9gQG5AQSCAbsBCoMBvAE-hAG9AQSFAb4BBIYBvwEKhwHCAT-IAcMBQw" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"organizer\",\"trip\",\"participants\",\"images\",\"reviews\",\"_count\",\"trips\",\"participations\",\"tripReviews\",\"reviewedBy\",\"organizerVerification\",\"reviewedVerifications\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"_avg\",\"_sum\",\"Account.groupBy\",\"Account.aggregate\",\"OrganizerVerification.findUnique\",\"OrganizerVerification.findUniqueOrThrow\",\"OrganizerVerification.findFirst\",\"OrganizerVerification.findFirstOrThrow\",\"OrganizerVerification.findMany\",\"OrganizerVerification.createOne\",\"OrganizerVerification.createMany\",\"OrganizerVerification.createManyAndReturn\",\"OrganizerVerification.updateOne\",\"OrganizerVerification.updateMany\",\"OrganizerVerification.updateManyAndReturn\",\"OrganizerVerification.upsertOne\",\"OrganizerVerification.deleteOne\",\"OrganizerVerification.deleteMany\",\"OrganizerVerification.groupBy\",\"OrganizerVerification.aggregate\",\"Trip.findUnique\",\"Trip.findUniqueOrThrow\",\"Trip.findFirst\",\"Trip.findFirstOrThrow\",\"Trip.findMany\",\"Trip.createOne\",\"Trip.createMany\",\"Trip.createManyAndReturn\",\"Trip.updateOne\",\"Trip.updateMany\",\"Trip.updateManyAndReturn\",\"Trip.upsertOne\",\"Trip.deleteOne\",\"Trip.deleteMany\",\"Trip.groupBy\",\"Trip.aggregate\",\"TripReview.findUnique\",\"TripReview.findUniqueOrThrow\",\"TripReview.findFirst\",\"TripReview.findFirstOrThrow\",\"TripReview.findMany\",\"TripReview.createOne\",\"TripReview.createMany\",\"TripReview.createManyAndReturn\",\"TripReview.updateOne\",\"TripReview.updateMany\",\"TripReview.updateManyAndReturn\",\"TripReview.upsertOne\",\"TripReview.deleteOne\",\"TripReview.deleteMany\",\"TripReview.groupBy\",\"TripReview.aggregate\",\"TripImage.findUnique\",\"TripImage.findUniqueOrThrow\",\"TripImage.findFirst\",\"TripImage.findFirstOrThrow\",\"TripImage.findMany\",\"TripImage.createOne\",\"TripImage.createMany\",\"TripImage.createManyAndReturn\",\"TripImage.updateOne\",\"TripImage.updateMany\",\"TripImage.updateManyAndReturn\",\"TripImage.upsertOne\",\"TripImage.deleteOne\",\"TripImage.deleteMany\",\"TripImage.groupBy\",\"TripImage.aggregate\",\"TripParticipant.findUnique\",\"TripParticipant.findUniqueOrThrow\",\"TripParticipant.findFirst\",\"TripParticipant.findFirstOrThrow\",\"TripParticipant.findMany\",\"TripParticipant.createOne\",\"TripParticipant.createMany\",\"TripParticipant.createManyAndReturn\",\"TripParticipant.updateOne\",\"TripParticipant.updateMany\",\"TripParticipant.updateManyAndReturn\",\"TripParticipant.upsertOne\",\"TripParticipant.deleteOne\",\"TripParticipant.deleteMany\",\"TripParticipant.groupBy\",\"TripParticipant.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"ParticipantStatus\",\"status\",\"createdAt\",\"markedPaidAt\",\"paymentConfirmedAt\",\"tripId\",\"userId\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"url\",\"caption\",\"order\",\"rating\",\"comment\",\"updatedAt\",\"title\",\"description\",\"ActivityCategory\",\"category\",\"destination\",\"location\",\"meetingPoint\",\"itinerary\",\"whatsIncluded\",\"whatsExcluded\",\"date\",\"endDate\",\"maxParticipants\",\"price\",\"TripStatus\",\"organizerId\",\"fullName\",\"nikEncrypted\",\"nikHash\",\"birthDate\",\"address\",\"ktpImageKey\",\"selfieKey\",\"bankName\",\"bankAccountNumber\",\"bankAccountName\",\"VerificationStatus\",\"rejectionReason\",\"reviewedAt\",\"reviewedById\",\"verifiedAt\",\"type\",\"provider\",\"providerAccountId\",\"refresh_token\",\"access_token\",\"expires_at\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"name\",\"email\",\"password\",\"image\",\"emailVerified\",\"acceptedTermsAndPrivacy\",\"acceptedAt\",\"every\",\"some\",\"none\",\"tripId_userId\",\"provider_providerAccountId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "9gNDcBMEAAD4AQAgCwAA-QEAIAwAAPoBACANAAD7AQAgDwAA_AEAIBAAAP0BACCJAQAA9gEAMIoBAAAeABCLAQAA9gEAMIwBAQAAAAGPAUAA8AEAIaQBQADwAQAhzgEBAO8BACHPAQEAAAAB0AEBAPIBACHRAQEA8gEAIdIBQADzAQAh0wEgAPcBACHUAUAA8wEAIQEAAAABACAQAwAA9AEAIIkBAACLAgAwigEAAAMAEIsBAACLAgAwjAEBAO8BACGTAQEA7wEAIcQBAQDvAQAhxQEBAO8BACHGAQEA7wEAIccBAQDyAQAhyAEBAPIBACHJAQIAjAIAIcoBAQDyAQAhywEBAPIBACHMAQEA8gEAIc0BAQDyAQAhCAMAAL8DACDHAQAAjQIAIMgBAACNAgAgyQEAAI0CACDKAQAAjQIAIMsBAACNAgAgzAEAAI0CACDNAQAAjQIAIBEDAAD0AQAgiQEAAIsCADCKAQAAAwAQiwEAAIsCADCMAQEAAAABkwEBAO8BACHEAQEA7wEAIcUBAQDvAQAhxgEBAO8BACHHAQEA8gEAIcgBAQDyAQAhyQECAIwCACHKAQEA8gEAIcsBAQDyAQAhzAEBAPIBACHNAQEA8gEAIdkBAACKAgAgAwAAAAMAIAEAAAQAMAIAAAUAIBkFAAD0AQAgBwAA-gEAIAgAAIkCACAJAAD7AQAgiQEAAIYCADCKAQAABwAQiwEAAIYCADCMAQEA7wEAIY4BAACIArQBIo8BQADwAQAhpAFAAPABACGlAQEA7wEAIaYBAQDyAQAhqAEAAIcCqAEiqQEBAO8BACGqAQEA7wEAIasBAQDyAQAhrAEBAPIBACGtAQEA8gEAIa4BAQDyAQAhrwFAAPABACGwAUAA8wEAIbEBAgCAAgAhsgECAIACACG0AQEA7wEAIQoFAAC_AwAgBwAAuwMAIAgAAMEDACAJAAC8AwAgpgEAAI0CACCrAQAAjQIAIKwBAACNAgAgrQEAAI0CACCuAQAAjQIAILABAACNAgAgGQUAAPQBACAHAAD6AQAgCAAAiQIAIAkAAPsBACCJAQAAhgIAMIoBAAAHABCLAQAAhgIAMIwBAQAAAAGOAQAAiAK0ASKPAUAA8AEAIaQBQADwAQAhpQEBAO8BACGmAQEA8gEAIagBAACHAqgBIqkBAQDvAQAhqgEBAO8BACGrAQEA8gEAIawBAQDyAQAhrQEBAPIBACGuAQEA8gEAIa8BQADwAQAhsAFAAPMBACGxAQIAgAIAIbIBAgCAAgAhtAEBAO8BACEDAAAABwAgAQAACAAwAgAACQAgDAMAAPQBACAGAACBAgAgiQEAAIQCADCKAQAACwAQiwEAAIQCADCMAQEA7wEAIY4BAACFAo4BIo8BQADwAQAhkAFAAPMBACGRAUAA8wEAIZIBAQDvAQAhkwEBAO8BACEEAwAAvwMAIAYAAMADACCQAQAAjQIAIJEBAACNAgAgDQMAAPQBACAGAACBAgAgiQEAAIQCADCKAQAACwAQiwEAAIQCADCMAQEAAAABjgEAAIUCjgEijwFAAPABACGQAUAA8wEAIZEBQADzAQAhkgEBAO8BACGTAQEA7wEAIdgBAACDAgAgAwAAAAsAIAEAAAwAMAIAAA0AIAkGAACBAgAgiQEAAIICADCKAQAADwAQiwEAAIICADCMAQEA7wEAIZIBAQDvAQAhnwEBAO8BACGgAQEA8gEAIaEBAgCAAgAhAgYAAMADACCgAQAAjQIAIAkGAACBAgAgiQEAAIICADCKAQAADwAQiwEAAIICADCMAQEAAAABkgEBAO8BACGfAQEA7wEAIaABAQDyAQAhoQECAIACACEDAAAADwAgAQAAEAAwAgAAEQAgDAMAAPQBACAGAACBAgAgiQEAAP8BADCKAQAAEwAQiwEAAP8BADCMAQEA7wEAIY8BQADwAQAhkgEBAO8BACGTAQEA7wEAIaIBAgCAAgAhowEBAPIBACGkAUAA8AEAIQMDAAC_AwAgBgAAwAMAIKMBAACNAgAgDQMAAPQBACAGAACBAgAgiQEAAP8BADCKAQAAEwAQiwEAAP8BADCMAQEAAAABjwFAAPABACGSAQEA7wEAIZMBAQDvAQAhogECAIACACGjAQEA8gEAIaQBQADwAQAh2AEAAP4BACADAAAAEwAgAQAAFAAwAgAAFQAgAQAAAAsAIAEAAAAPACABAAAAEwAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAATACABAAAUADACAAAVACAYAwAA9AEAIA4AAPUBACCJAQAA7gEAMIoBAAAcABCLAQAA7gEAMIwBAQDvAQAhjgEAAPEBwAEijwFAAPABACGTAQEA7wEAIaQBQADwAQAhtQEBAO8BACG2AQEA7wEAIbcBAQDvAQAhuAFAAPABACG5AQEA7wEAIboBAQDvAQAhuwEBAO8BACG8AQEA7wEAIb0BAQDvAQAhvgEBAO8BACHAAQEA8gEAIcEBQADzAQAhwgEBAPIBACHDAUAA8wEAIQEAAAAcACATBAAA-AEAIAsAAPkBACAMAAD6AQAgDQAA-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_ABCLAQAA2wEAMIwBAQDFAQAhjgEAAN0BtAEijwFAAMcBACGkAUAAxwEAIaUBAQDFAQAhpgEBANQBACGoAQAA3AGoASKpAQEAxQEAIaoBAQDFAQAhqwEBANQBACGsAQEA1AEAIa0BAQDUAQAhrgEBANQBACGvAUAAxwEAIbABQADIAQAhsQECANUBACGyAQIA1QEAIbQBAQDFAQAhAwAAAAcAIAEAAH4AMCIAAH8AIAMAAAAHACABAAAIADACAAAJACABAAAAFQAgAQAAABUAIAMAAAATACABAAAUADACAAAVACADAAAAEwAgAQAAFAAwAgAAFQAgAwAAABMAIAEAABQAMAIAABUAIAkDAACqAgAgBgAAqQIAIIwBAQAAAAGPAUAAAAABkgEBAAAAAZMBAQAAAAGiAQIAAAABowEBAAAAAaQBQAAAAAEBFgAAhwEAIAeMAQEAAAABjwFAAAAAAZIBAQAAAAGTAQEAAAABogECAAAAAaMBAQAAAAGkAUAAAAABARYAAIkBADABFgAAiQEAMAkDAACoAgAgBgAApwIAIIwBAQCRAgAhjwFAAJMCACGSAQEAkQIAIZMBAQCRAgAhogECAJ8CACGjAQEAngIAIaQBQACTAgAhAgAAABUAIBYAAIwBACAHjAEBAJECACGPAUAAkwIAIZIBAQCRAgAhkwEBAJECACGiAQIAnwIAIaMBAQCeAgAhpAFAAJMCACECAAAAEwAgFgAAjgEAIAIAAAATACAWAACOAQAgAwAAABUAIB0AAIcBACAeAACMAQAgAQAAABUAIAEAAAATACAGCgAAogIAICMAAKUCACAkAACkAgAgNQAAowIAIDYAAKYCACCjAQAAjQIAIAqJAQAA2gEAMIoBAACVAQAQiwEAANoBADCMAQEAxQEAIY8BQADHAQAhkgEBAMUBACGTAQEAxQEAIaIBAgDVAQAhowEBANQBACGkAUAAxwEAIQMAAAATACABAACUAQAwIgAAlQEAIAMAAAATACABAAAUADACAAAVACABAAAAEQAgAQAAABEAIAMAAAAPACABAAAQADACAAARACADAAAADwAgAQAAEAAwAgAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAYGAAChAgAgjAEBAAAAAZIBAQAAAAGfAQEAAAABoAEBAAAAAaEBAgAAAAEBFgAAnQEAIAWMAQEAAAABkgEBAAAAAZ8BAQAAAAGgAQEAAAABoQECAAAAAQEWAACfAQAwARYAAJ8BADAGBgAAoAIAIIwBAQCRAgAhkgEBAJECACGfAQEAkQIAIaABAQCeAgAhoQECAJ8CACECAAAAEQAgFgAAogEAIAWMAQEAkQIAIZIBAQCRAgAhnwEBAJECACGgAQEAngIAIaEBAgCfAgAhAgAAAA8AIBYAAKQBACACAAAADwAgFgAApAEAIAMAAAARACAdAACdAQAgHgAAogEAIAEAAAARACABAAAADwAgBgoAAJkCACAjAACcAgAgJAAAmwIAIDUAAJoCACA2AACdAgAgoAEAAI0CACAIiQEAANMBADCKAQAAqwEAEIsBAADTAQAwjAEBAMUBACGSAQEAxQEAIZ8BAQDFAQAhoAEBANQBACGhAQIA1QEAIQMAAAAPACABAACqAQAwIgAAqwEAIAMAAAAPACABAAAQADACAAARACABAAAADQAgAQAAAA0AIAMAAAALACABAAAMADACAAANACADAAAACwAgAQAADAAwAgAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAkDAACYAgAgBgAAlwIAIIwBAQAAAAGOAQAAAI4BAo8BQAAAAAGQAUAAAAABkQFAAAAAAZIBAQAAAAGTAQEAAAABARYAALMBACAHjAEBAAAAAY4BAAAAjgECjwFAAAAAAZABQAAAAAGRAUAAAAABkgEBAAAAAZMBAQAAAAEBFgAAtQEAMAEWAAC1AQAwCQMAAJYCACAGAACVAgAgjAEBAJECACGOAQAAkgKOASKPAUAAkwIAIZABQACUAgAhkQFAAJQCACGSAQEAkQIAIZMBAQCRAgAhAgAAAA0AIBYAALgBACAHjAEBAJECACGOAQAAkgKOASKPAUAAkwIAIZABQACUAgAhkQFAAJQCACGSAQEAkQIAIZMBAQCRAgAhAgAAAAsAIBYAALoBACACAAAACwAgFgAAugEAIAMAAAANACAdAACzAQAgHgAAuAEAIAEAAAANACABAAAACwAgBQoAAI4CACAjAACQAgAgJAAAjwIAIJABAACNAgAgkQEAAI0CACAKiQEAAMQBADCKAQAAwQEAEIsBAADEAQAwjAEBAMUBACGOAQAAxgGOASKPAUAAxwEAIZABQADIAQAhkQFAAMgBACGSAQEAxQEAIZMBAQDFAQAhAwAAAAsAIAEAAMABADAiAADBAQAgAwAAAAsAIAEAAAwAMAIAAA0AIAqJAQAAxAEAMIoBAADBAQAQiwEAAMQBADCMAQEAxQEAIY4BAADGAY4BIo8BQADHAQAhkAFAAMgBACGRAUAAyAEAIZIBAQDFAQAhkwEBAMUBACEOCgAAzQEAICMAANIBACAkAADSAQAglAEBAAAAAZUBAQAAAASWAQEAAAAElwEBAAAAAZgBAQAAAAGZAQEAAAABmgEBAAAAAZsBAQDRAQAhnAEBAAAAAZ0BAQAAAAGeAQEAAAABBwoAAM0BACAjAADQAQAgJAAA0AEAIJQBAAAAjgEClQEAAACOAQiWAQAAAI4BCJsBAADPAY4BIgsKAADNAQAgIwAAzgEAICQAAM4BACCUAUAAAAABlQFAAAAABJYBQAAAAASXAUAAAAABmAFAAAAAAZkBQAAAAAGaAUAAAAABmwFAAMwBACELCgAAygEAICMAAMsBACAkAADLAQAglAFAAAAAAZUBQAAAAAWWAUAAAAAFlwFAAAAAAZgBQAAAAAGZAUAAAAABmgFAAAAAAZsBQADJAQAhCwoAAMoBACAjAADLAQAgJAAAywEAIJQBQAAAAAGVAUAAAAAFlgFAAAAABZcBQAAAAAGYAUAAAAABmQFAAAAAAZoBQAAAAAGbAUAAyQEAIQiUAQIAAAABlQECAAAABZYBAgAAAAWXAQIAAAABmAECAAAAAZkBAgAAAAGaAQIAAAABmwECAMoBACEIlAFAAAAAAZUBQAAAAAWWAUAAAAAFlwFAAAAAAZgBQAAAAAGZAUAAAAABmgFAAAAAAZsBQADLAQAhCwoAAM0BACAjAADOAQAgJAAAzgEAIJQBQAAAAAGVAUAAAAAElgFAAAAABJcBQAAAAAGYAUAAAAABmQFAAAAAAZoBQAAAAAGbAUAAzAEAIQiUAQIAAAABlQECAAAABJYBAgAAAASXAQIAAAABmAECAAAAAZkBAgAAAAGaAQIAAAABmwECAM0BACEIlAFAAAAAAZUBQAAAAASWAUAAAAAElwFAAAAAAZgBQAAAAAGZAUAAAAABmgFAAAAAAZsBQADOAQAhBwoAAM0BACAjAADQAQAgJAAA0AEAIJQBAAAAjgEClQEAAACOAQiWAQAAAI4BCJsBAADPAY4BIgSUAQAAAI4BApUBAAAAjgEIlgEAAACOAQibAQAA0AGOASIOCgAAzQEAICMAANIBACAkAADSAQAglAEBAAAAAZUBAQAAAASWAQEAAAAElwEBAAAAAZgBAQAAAAGZAQEAAAABmgEBAAAAAZsBAQDRAQAhnAEBAAAAAZ0BAQAAAAGeAQEAAAABC5QBAQAAAAGVAQEAAAAElgEBAAAABJcBAQAAAAGYAQEAAAABmQEBAAAAAZoBAQAAAAGbAQEA0gEAIZwBAQAAAAGdAQEAAAABngEBAAAAAQiJAQAA0wEAMIoBAACrAQAQiwEAANMBADCMAQEAxQEAIZIBAQDFAQAhnwEBAMUBACGgAQEA1AEAIaEBAgDVAQAhDgoAAMoBACAjAADZAQAgJAAA2QEAIJQBAQAAAAGVAQEAAAAFlgEBAAAABZcBAQAAAAGYAQEAAAABmQEBAAAAAZoBAQAAAAGbAQEA2AEAIZwBAQAAAAGdAQEAAAABngEBAAAAAQ0KAADNAQAgIwAAzQEAICQAAM0BACA1AADXAQAgNgAAzQEAIJQBAgAAAAGVAQIAAAAElgECAAAABJcBAgAAAAGYAQIAAAABmQECAAAAAZoBAgAAAAGbAQIA1gEAIQ0KAADNAQAgIwAAzQEAICQAAM0BACA1AADXAQAgNgAAzQEAIJQBAgAAAAGVAQIAAAAElgECAAAABJcBAgAAAAGYAQIAAAABmQECAAAAAZoBAgAAAAGbAQIA1gEAIQiUAQgAAAABlQEIAAAABJYBCAAAAASXAQgAAAABmAEIAAAAAZkBCAAAAAGaAQgAAAABmwEIANcBACEOCgAAygEAICMAANkBACAkAADZAQAglAEBAAAAAZUBAQAAAAWWAQEAAAAFlwEBAAAAAZgBAQAAAAGZAQEAAAABmgEBAAAAAZsBAQDYAQAhnAEBAAAAAZ0BAQAAAAGeAQEAAAABC5QBAQAAAAGVAQEAAAAFlgEBAAAABZcBAQAAAAGYAQEAAAABmQEBAAAAAZoBAQAAAAGbAQEA2QEAIZwBAQAAAAGdAQEAAAABngEBAAAAAQqJAQAA2gEAMIoBAACVAQAQiwEAANoBADCMAQEAxQEAIY8BQADHAQAhkgEBAMUBACGTAQEAxQEAIaIBAgDVAQAhowEBANQBACGkAUAAxwEAIRWJAQAA2wEAMIoBAAB_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-QEAIAwAAPoBACANAAD7AQAgDwAA_AEAIBAAAP0BACCJAQAA9gEAMIoBAAAeABCLAQAA9gEAMIwBAQDvAQAhjwFAAPABACGkAUAA8AEAIc4BAQDvAQAhzwEBAO8BACHQAQEA8gEAIdEBAQDyAQAh0gFAAPMBACHTASAA9wEAIdQBQADzAQAh2gEAAB4AINsBAAAeACAVBAAA-AEAIAsAAPkBACAMAAD6AQAgDQAA-wEAIA8AAPwBACAQAAD9AQAgiQEAAPYBADCKAQAAHgAQiwEAAPYBADCMAQEA7wEAIY8BQADwAQAhpAFAAPABACHOAQEA7wEAIc8BAQDvAQAh0AEBAPIBACHRAQEA8gEAIdIBQADzAQAh0wEgAPcBACHUAUAA8wEAIdoBAAAeACDbAQAAHgAgEwQAAPgBACALAAD5AQAgDAAA-gEAIA0AAPsBACAPAAD8AQAgEAAA_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-AgAgFgAAvwIAIAqJAQAAvQIAMIoBAAC-AgAQiwEAAL0CADCMAQEA7wEAIY8BQADwAQAhkgEBAO8BACGTAQEA7wEAIaIBAgCAAgAhowEBAPIBACGkAUAA8AEAIQqJAQAAvQIAMIoBAAC-AgAQiwEAAL0CADCMAQEA7wEAIY8BQADwAQAhkgEBAO8BACGTAQEA7wEAIaIBAgCAAgAhowEBAPIBACGkAUAA8AEAIQaMAQEAkQIAIY8BQACTAgAhkwEBAJECACGiAQIAnwIAIaMBAQCeAgAhpAFAAJMCACEHAwAAqAIAIIwBAQCRAgAhjwFAAJMCACGTAQEAkQIAIaIBAgCfAgAhowEBAJ4CACGkAUAAkwIAIQcDAACqAgAgjAEBAAAAAY8BQAAAAAGTAQEAAAABogECAAAAAaMBAQAAAAGkAUAAAAABBIwBAQAAAAGfAQEAAAABoAEBAAAAAaEBAgAAAAECAAAAEQAgHQAAzQIAIAMAAAARACAdAADNAgAgHgAAzAIAIAEWAADZAwAwCQYAAIECACCJAQAAggIAMIoBAAAPABCLAQAAggIAMIwBAQAAAAGSAQEA7wEAIZ8BAQDvAQAhoAEBAPIBACGhAQIAgAIAIQIAAAARACAWAADMAgAgAgAAAMoCACAWAADLAgAgCIkBAADJAgAwigEAAMoCABCLAQAAyQIAMIwBAQDvAQAhkgEBAO8BACGfAQEA7wEAIaABAQDyAQAhoQECAIACACEIiQEAAMkCADCKAQAAygIAEIsBAADJAgAwjAEBAO8BACGSAQEA7wEAIZ8BAQDvAQAhoAEBAPIBACGhAQIAgAIAIQSMAQEAkQIAIZ8BAQCRAgAhoAEBAJ4CACGhAQIAnwIAIQSMAQEAkQIAIZ8BAQCRAgAhoAEBAJ4CACGhAQIAnwIAIQSMAQEAAAABnwEBAAAAAaABAQAAAAGhAQIAAAABBwMAAJgCACCMAQEAAAABjgEAAACOAQKPAUAAAAABkAFAAAAAAZEBQAAAAAGTAQEAAAABAgAAAA0AIB0AANkCACADAAAADQAgHQAA2QIAIB4AANgCACABFgAA2AMAMA0DAAD0AQAgBgAAgQIAIIkBAACEAgAwigEAAAsAEIsBAACEAgAwjAEBAAAAAY4BAACFAo4BIo8BQADwAQAhkAFAAPMBACGRAUAA8wEAIZIBAQDvAQAhkwEBAO8BACHYAQAAgwIAIAIAAAANACAWAADYAgAgAgAAANYCACAWAADXAgAgCokBAADVAgAwigEAANYCABCLAQAA1QIAMIwBAQDvAQAhjgEAAIUCjgEijwFAAPABACGQAUAA8wEAIZEBQADzAQAhkgEBAO8BACGTAQEA7wEAIQqJAQAA1QIAMIoBAADWAgAQiwEAANUCADCMAQEA7wEAIY4BAACFAo4BIo8BQADwAQAhkAFAAPMBACGRAUAA8wEAIZIBAQDvAQAhkwEBAO8BACEGjAEBAJECACGOAQAAkgKOASKPAUAAkwIAIZABQACUAgAhkQFAAJQCACGTAQEAkQIAIQcDAACWAgAgjAEBAJECACGOAQAAkgKOASKPAUAAkwIAIZABQACUAgAhkQFAAJQCACGTAQEAkQIAIQcDAACYAgAgjAEBAAAAAY4BAAAAjgECjwFAAAAAAZABQAAAAAGRAUAAAAABkwEBAAAAAQMdAADWAwAg3AEAANcDACDiAQAAAQAgBB0AAM4CADDcAQAAzwIAMN4BAADRAgAg4gEAANICADAEHQAAwgIAMNwBAADDAgAw3gEAAMUCACDiAQAAxgIAMAQdAAC2AgAw3AEAALcCADDeAQAAuQIAIOIBAAC6AgAwAAAAAd8BAAAAwAECBR0AAM4DACAeAADUAwAg3AEAAM8DACDdAQAA0wMAIOIBAAABACAHHQAAzAMAIB4AANEDACDcAQAAzQMAIN0BAADQAwAg4AEAAB4AIOEBAAAeACDiAQAAAQAgAx0AAM4DACDcAQAAzwMAIOIBAAABACADHQAAzAMAINwBAADNAwAg4gEAAAEAIAAAAAAABd8BAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAAAABBR0AAMcDACAeAADKAwAg3AEAAMgDACDdAQAAyQMAIOIBAAABACADHQAAxwMAINwBAADIAwAg4gEAAAEAIAAAAAHfASAAAAABCx0AAKcDADAeAACsAwAw3AEAAKgDADDdAQAAqQMAMN4BAACqAwAg3wEAAKsDADDgAQAAqwMAMOEBAACrAwAw4gEAAKsDADDjAQAArQMAMOQBAACuAwAwCx0AAJsDADAeAACgAwAw3AEAAJwDADDdAQAAnQMAMN4BAACeAwAg3wEAAJ8DADDgAQAAnwMAMOEBAACfAwAw4gEAAJ8DADDjAQAAoQMAMOQBAACiAwAwCx0AAJIDADAeAACWAwAw3AEAAJMDADDdAQAAlAMAMN4BAACVAwAg3wEAANICADDgAQAA0gIAMOEBAADSAgAw4gEAANICADDjAQAAlwMAMOQBAADVAgAwCx0AAIkDADAeAACNAwAw3AEAAIoDADDdAQAAiwMAMN4BAACMAwAg3wEAALoCADDgAQAAugIAMOEBAAC6AgAw4gEAALoCADDjAQAAjgMAMOQBAAC9AgAwBx0AAIQDACAeAACHAwAg3AEAAIUDACDdAQAAhgMAIOABAAAcACDhAQAAHAAg4gEAACEAIAsdAAD4AgAwHgAA_QIAMNwBAAD5AgAw3QEAAPoCADDeAQAA-wIAIN8BAAD8AgAw4AEAAPwCADDhAQAA_AIAMOIBAAD8AgAw4wEAAP4CADDkAQAA_wIAMBMDAADkAgAgjAEBAAAAAY4BAAAAwAECjwFAAAAAAZMBAQAAAAGkAUAAAAABtQEBAAAAAbYBAQAAAAG3AQEAAAABuAFAAAAAAbkBAQAAAAG6AQEAAAABuwEBAAAAAbwBAQAAAAG9AQEAAAABvgEBAAAAAcABAQAAAAHBAUAAAAABwwFAAAAAAQIAAAAhACAdAACDAwAgAwAAACEAIB0AAIMDACAeAACCAwAgARYAAMYDADAYAwAA9AEAIA4AAPUBACCJAQAA7gEAMIoBAAAcABCLAQAA7gEAMIwBAQAAAAGOAQAA8QHAASKPAUAA8AEAIZMBAQAAAAGkAUAA8AEAIbUBAQDvAQAhtgEBAO8BACG3AQEAAAABuAFAAPABACG5AQEA7wEAIboBAQDvAQAhuwEBAO8BACG8AQEA7wEAIb0BAQDvAQAhvgEBAO8BACHAAQEA8gEAIcEBQADzAQAhwgEBAPIBACHDAUAA8wEAIQIAAAAhACAWAACCAwAgAgAAAIADACAWAACBAwAgFokBAAD_AgAwigEAAIADABCLAQAA_wIAMIwBAQDvAQAhjgEAAPEBwAEijwFAAPABACGTAQEA7wEAIaQBQADwAQAhtQEBAO8BACG2AQEA7wEAIbcBAQDvAQAhuAFAAPABACG5AQEA7wEAIboBAQDvAQAhuwEBAO8BACG8AQEA7wEAIb0BAQDvAQAhvgEBAO8BACHAAQEA8gEAIcEBQADzAQAhwgEBAPIBACHDAUAA8wEAIRaJAQAA_wIAMIoBAACAAwAQiwEAAP8CADCMAQEA7wEAIY4BAADxAcABIo8BQADwAQAhkwEBAO8BACGkAUAA8AEAIbUBAQDvAQAhtgEBAO8BACG3AQEA7wEAIbgBQADwAQAhuQEBAO8BACG6AQEA7wEAIbsBAQDvAQAhvAEBAO8BACG9AQEA7wEAIb4BAQDvAQAhwAEBAPIBACHBAUAA8wEAIcIBAQDyAQAhwwFAAPMBACESjAEBAJECACGOAQAA4QLAASKPAUAAkwIAIZMBAQCRAgAhpAFAAJMCACG1AQEAkQIAIbYBAQCRAgAhtwEBAJECACG4AUAAkwIAIbkBAQCRAgAhugEBAJECACG7AQEAkQIAIbwBAQCRAgAhvQEBAJECACG-AQEAkQIAIcABAQCeAgAhwQFAAJQCACHDAUAAlAIAIRMDAADiAgAgjAEBAJECACGOAQAA4QLAASKPAUAAkwIAIZMBAQCRAgAhpAFAAJMCACG1AQEAkQIAIbYBAQCRAgAhtwEBAJECACG4AUAAkwIAIbkBAQCRAgAhugEBAJECACG7AQEAkQIAIbwBAQCRAgAhvQEBAJECACG-AQEAkQIAIcABAQCeAgAhwQFAAJQCACHDAUAAlAIAIRMDAADkAgAgjAEBAAAAAY4BAAAAwAECjwFAAAAAAZMBAQAAAAGkAUAAAAABtQEBAAAAAbYBAQAAAAG3AQEAAAABuAFAAAAAAbkBAQAAAAG6AQEAAAABuwEBAAAAAbwBAQAAAAG9AQEAAAABvgEBAAAAAcABAQAAAAHBAUAAAAABwwFAAAAAARMOAADlAgAgjAEBAAAAAY4BAAAAwAECjwFAAAAAAaQBQAAAAAG1AQEAAAABtgEBAAAAAbcBAQAAAAG4AUAAAAABuQEBAAAAAboBAQAAAAG7AQEAAAABvAEBAAAAAb0BAQAAAAG-AQEAAAABwAEBAAAAAcEBQAAAAAHCAQEAAAABwwFAAAAAAQIAAAAhACAdAACEAwAgAwAAABwAIB0AAIQDACAeAACIAwAgFQAAABwAIA4AAOMCACAWAACIAwAgjAEBAJECACGOAQAA4QLAASKPAUAAkwIAIaQBQACTAgAhtQEBAJECACG2AQEAkQIAIbcBAQCRAgAhuAFAAJMCACG5AQEAkQIAIboBAQCRAgAhuwEBAJECACG8AQEAkQIAIb0BAQCRAgAhvgEBAJECACHAAQEAngIAIcEBQACUAgAhwgEBAJ4CACHDAUAAlAIAIRMOAADjAgAgjAEBAJECACGOAQAA4QLAASKPAUAAkwIAIaQBQACTAgAhtQEBAJECACG2AQEAkQIAIbcBAQCRAgAhuAFAAJMCACG5AQEAkQIAIboBAQCRAgAhuwEBAJECACG8AQEAkQIAIb0BAQCRAgAhvgEBAJECACHAAQEAngIAIcEBQACUAgAhwgEBAJ4CACHDAUAAlAIAIQcGAACpAgAgjAEBAAAAAY8BQAAAAAGSAQEAAAABogECAAAAAaMBAQAAAAGkAUAAAAABAgAAABUAIB0AAJEDACADAAAAFQAgHQAAkQMAIB4AAJADACABFgAAxQMAMAIAAAAVACAWAACQAwAgAgAAAL4CACAWAACPAwAgBowBAQCRAgAhjwFAAJMCACGSAQEAkQIAIaIBAgCfAgAhowEBAJ4CACGkAUAAkwIAIQcGAACnAgAgjAEBAJECACGPAUAAkwIAIZIBAQCRAgAhogECAJ8CACGjAQEAngIAIaQBQACTAgAhBwYAAKkCACCMAQEAAAABjwFAAAAAAZIBAQAAAAGiAQIAAAABowEBAAAAAaQBQAAAAAEHBgAAlwIAIIwBAQAAAAGOAQAAAI4BAo8BQAAAAAGQAUAAAAABkQFAAAAAAZIBAQAAAAECAAAADQAgHQAAmgMAIAMAAAANACAdAACaAwAgHgAAmQMAIAEWAADEAwAwAgAAAA0AIBYAAJkDACACAAAA1gIAIBYAAJgDACAGjAEBAJECACGOAQAAkgKOASKPAUAAkwIAIZABQACUAgAhkQFAAJQCACGSAQEAkQIAIQcGAACVAgAgjAEBAJECACGOAQAAkgKOASKPAUAAkwIAIZABQACUAgAhkQFAAJQCACGSAQEAkQIAIQcGAACX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_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-Aig_AilAAipBAitCAixEAi1GCi5HEi9JAjBLCjFMEzJNAjNOAjRPCjdSFDhTGjlUCDpVCDtWCDxXCD1YCD5aCD9cCkBdG0FgCEJiCkNjHERlCEVmCEZnCkdqHUhrIUlsA0ptA0tuA0xvA01wA05yA090ClB1IlF3A1J5ClN6I1R7A1V8A1Z9CleAASRYgQEqWYIBBlqDAQZbhAEGXIUBBl2GAQZeiAEGX4oBCmCLASthjQEGYo8BCmOQASxkkQEGZZIBBmaTAQpnlgEtaJcBM2mYAQVqmQEFa5oBBWybAQVtnAEFbp4BBW-gAQpwoQE0caMBBXKlAQpzpgE1dKcBBXWoAQV2qQEKd6wBNnitATx5rgEEeq8BBHuwAQR8sQEEfbIBBH60AQR_tgEKgAG3AT2BAbkBBIIBuwEKgwG8AT6EAb0BBIUBvgEEhgG_AQqHAcIBP4gBwwFD" } async function decodeBase64AsWasm(wasmBase64: string): Promise { diff --git a/app/generated/prisma/internal/prismaNamespace.ts b/app/generated/prisma/internal/prismaNamespace.ts index 9be97ff..3576354 100644 --- a/app/generated/prisma/internal/prismaNamespace.ts +++ b/app/generated/prisma/internal/prismaNamespace.ts @@ -1030,7 +1030,8 @@ export const TripScalarFieldEnum = { id: 'id', title: 'title', description: 'description', - mountain: 'mountain', + category: 'category', + destination: 'destination', location: 'location', meetingPoint: 'meetingPoint', itinerary: 'itinerary', @@ -1179,6 +1180,20 @@ export type ListEnumVerificationStatusFieldRefInput<$PrismaModel> = FieldRefInpu +/** + * Reference to a field of type 'ActivityCategory' + */ +export type EnumActivityCategoryFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ActivityCategory'> + + + +/** + * Reference to a field of type 'ActivityCategory[]' + */ +export type ListEnumActivityCategoryFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ActivityCategory[]'> + + + /** * Reference to a field of type 'TripStatus' */ diff --git a/app/generated/prisma/internal/prismaNamespaceBrowser.ts b/app/generated/prisma/internal/prismaNamespaceBrowser.ts index ac42744..fa4c22f 100644 --- a/app/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/app/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -139,7 +139,8 @@ export const TripScalarFieldEnum = { id: 'id', title: 'title', description: 'description', - mountain: 'mountain', + category: 'category', + destination: 'destination', location: 'location', meetingPoint: 'meetingPoint', itinerary: 'itinerary', diff --git a/app/generated/prisma/models/Trip.ts b/app/generated/prisma/models/Trip.ts index e475920..a7c33fc 100644 --- a/app/generated/prisma/models/Trip.ts +++ b/app/generated/prisma/models/Trip.ts @@ -40,7 +40,8 @@ export type TripMinAggregateOutputType = { id: string | null title: string | null description: string | null - mountain: string | null + category: $Enums.ActivityCategory | null + destination: string | null location: string | null meetingPoint: string | null itinerary: string | null @@ -60,7 +61,8 @@ export type TripMaxAggregateOutputType = { id: string | null title: string | null description: string | null - mountain: string | null + category: $Enums.ActivityCategory | null + destination: string | null location: string | null meetingPoint: string | null itinerary: string | null @@ -80,7 +82,8 @@ export type TripCountAggregateOutputType = { id: number title: number description: number - mountain: number + category: number + destination: number location: number meetingPoint: number itinerary: number @@ -112,7 +115,8 @@ export type TripMinAggregateInputType = { id?: true title?: true description?: true - mountain?: true + category?: true + destination?: true location?: true meetingPoint?: true itinerary?: true @@ -132,7 +136,8 @@ export type TripMaxAggregateInputType = { id?: true title?: true description?: true - mountain?: true + category?: true + destination?: true location?: true meetingPoint?: true itinerary?: true @@ -152,7 +157,8 @@ export type TripCountAggregateInputType = { id?: true title?: true description?: true - mountain?: true + category?: true + destination?: true location?: true meetingPoint?: true itinerary?: true @@ -259,7 +265,8 @@ export type TripGroupByOutputType = { id: string title: string description: string | null - mountain: string + category: $Enums.ActivityCategory + destination: string location: string meetingPoint: string | null itinerary: string | null @@ -302,7 +309,8 @@ export type TripWhereInput = { id?: Prisma.StringFilter<"Trip"> | string title?: Prisma.StringFilter<"Trip"> | string description?: Prisma.StringNullableFilter<"Trip"> | string | null - mountain?: Prisma.StringFilter<"Trip"> | string + category?: Prisma.EnumActivityCategoryFilter<"Trip"> | $Enums.ActivityCategory + destination?: Prisma.StringFilter<"Trip"> | string location?: Prisma.StringFilter<"Trip"> | string meetingPoint?: Prisma.StringNullableFilter<"Trip"> | string | null itinerary?: Prisma.StringNullableFilter<"Trip"> | string | null @@ -326,7 +334,8 @@ export type TripOrderByWithRelationInput = { id?: Prisma.SortOrder title?: Prisma.SortOrder description?: Prisma.SortOrderInput | Prisma.SortOrder - mountain?: Prisma.SortOrder + category?: Prisma.SortOrder + destination?: Prisma.SortOrder location?: Prisma.SortOrder meetingPoint?: Prisma.SortOrderInput | Prisma.SortOrder itinerary?: Prisma.SortOrderInput | Prisma.SortOrder @@ -353,7 +362,8 @@ export type TripWhereUniqueInput = Prisma.AtLeast<{ NOT?: Prisma.TripWhereInput | Prisma.TripWhereInput[] title?: Prisma.StringFilter<"Trip"> | string description?: Prisma.StringNullableFilter<"Trip"> | string | null - mountain?: Prisma.StringFilter<"Trip"> | string + category?: Prisma.EnumActivityCategoryFilter<"Trip"> | $Enums.ActivityCategory + destination?: Prisma.StringFilter<"Trip"> | string location?: Prisma.StringFilter<"Trip"> | string meetingPoint?: Prisma.StringNullableFilter<"Trip"> | string | null itinerary?: Prisma.StringNullableFilter<"Trip"> | string | null @@ -377,7 +387,8 @@ export type TripOrderByWithAggregationInput = { id?: Prisma.SortOrder title?: Prisma.SortOrder description?: Prisma.SortOrderInput | Prisma.SortOrder - mountain?: Prisma.SortOrder + category?: Prisma.SortOrder + destination?: Prisma.SortOrder location?: Prisma.SortOrder meetingPoint?: Prisma.SortOrderInput | Prisma.SortOrder itinerary?: Prisma.SortOrderInput | Prisma.SortOrder @@ -405,7 +416,8 @@ export type TripScalarWhereWithAggregatesInput = { id?: Prisma.StringWithAggregatesFilter<"Trip"> | string title?: Prisma.StringWithAggregatesFilter<"Trip"> | string description?: Prisma.StringNullableWithAggregatesFilter<"Trip"> | string | null - mountain?: Prisma.StringWithAggregatesFilter<"Trip"> | string + category?: Prisma.EnumActivityCategoryWithAggregatesFilter<"Trip"> | $Enums.ActivityCategory + destination?: Prisma.StringWithAggregatesFilter<"Trip"> | string location?: Prisma.StringWithAggregatesFilter<"Trip"> | string meetingPoint?: Prisma.StringNullableWithAggregatesFilter<"Trip"> | string | null itinerary?: Prisma.StringNullableWithAggregatesFilter<"Trip"> | string | null @@ -425,7 +437,8 @@ export type TripCreateInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -448,7 +461,8 @@ export type TripUncheckedCreateInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -471,7 +485,8 @@ export type TripUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -494,7 +509,8 @@ export type TripUncheckedUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -517,7 +533,8 @@ export type TripCreateManyInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -537,7 +554,8 @@ export type TripUpdateManyMutationInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -556,7 +574,8 @@ export type TripUncheckedUpdateManyInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -586,7 +605,8 @@ export type TripCountOrderByAggregateInput = { id?: Prisma.SortOrder title?: Prisma.SortOrder description?: Prisma.SortOrder - mountain?: Prisma.SortOrder + category?: Prisma.SortOrder + destination?: Prisma.SortOrder location?: Prisma.SortOrder meetingPoint?: Prisma.SortOrder itinerary?: Prisma.SortOrder @@ -611,7 +631,8 @@ export type TripMaxOrderByAggregateInput = { id?: Prisma.SortOrder title?: Prisma.SortOrder description?: Prisma.SortOrder - mountain?: Prisma.SortOrder + category?: Prisma.SortOrder + destination?: Prisma.SortOrder location?: Prisma.SortOrder meetingPoint?: Prisma.SortOrder itinerary?: Prisma.SortOrder @@ -631,7 +652,8 @@ export type TripMinOrderByAggregateInput = { id?: Prisma.SortOrder title?: Prisma.SortOrder description?: Prisma.SortOrder - mountain?: Prisma.SortOrder + category?: Prisma.SortOrder + destination?: Prisma.SortOrder location?: Prisma.SortOrder meetingPoint?: Prisma.SortOrder itinerary?: Prisma.SortOrder @@ -699,6 +721,10 @@ export type TripUncheckedUpdateManyWithoutOrganizerNestedInput = { deleteMany?: Prisma.TripScalarWhereInput | Prisma.TripScalarWhereInput[] } +export type EnumActivityCategoryFieldUpdateOperationsInput = { + set?: $Enums.ActivityCategory +} + export type IntFieldUpdateOperationsInput = { set?: number increment?: number @@ -757,7 +783,8 @@ export type TripCreateWithoutOrganizerInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -779,7 +806,8 @@ export type TripUncheckedCreateWithoutOrganizerInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -830,7 +858,8 @@ export type TripScalarWhereInput = { id?: Prisma.StringFilter<"Trip"> | string title?: Prisma.StringFilter<"Trip"> | string description?: Prisma.StringNullableFilter<"Trip"> | string | null - mountain?: Prisma.StringFilter<"Trip"> | string + category?: Prisma.EnumActivityCategoryFilter<"Trip"> | $Enums.ActivityCategory + destination?: Prisma.StringFilter<"Trip"> | string location?: Prisma.StringFilter<"Trip"> | string meetingPoint?: Prisma.StringNullableFilter<"Trip"> | string | null itinerary?: Prisma.StringNullableFilter<"Trip"> | string | null @@ -850,7 +879,8 @@ export type TripCreateWithoutReviewsInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -872,7 +902,8 @@ export type TripUncheckedCreateWithoutReviewsInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -910,7 +941,8 @@ export type TripUpdateWithoutReviewsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -932,7 +964,8 @@ export type TripUncheckedUpdateWithoutReviewsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -954,7 +987,8 @@ export type TripCreateWithoutImagesInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -976,7 +1010,8 @@ export type TripUncheckedCreateWithoutImagesInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -1014,7 +1049,8 @@ export type TripUpdateWithoutImagesInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -1036,7 +1072,8 @@ export type TripUncheckedUpdateWithoutImagesInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -1058,7 +1095,8 @@ export type TripCreateWithoutParticipantsInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -1080,7 +1118,8 @@ export type TripUncheckedCreateWithoutParticipantsInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -1118,7 +1157,8 @@ export type TripUpdateWithoutParticipantsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -1140,7 +1180,8 @@ export type TripUncheckedUpdateWithoutParticipantsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -1162,7 +1203,8 @@ export type TripCreateManyOrganizerInput = { id?: string title: string description?: string | null - mountain: string + category?: $Enums.ActivityCategory + destination: string location: string meetingPoint?: string | null itinerary?: string | null @@ -1181,7 +1223,8 @@ export type TripUpdateWithoutOrganizerInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -1203,7 +1246,8 @@ export type TripUncheckedUpdateWithoutOrganizerInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -1225,7 +1269,8 @@ export type TripUncheckedUpdateManyWithoutOrganizerInput = { id?: Prisma.StringFieldUpdateOperationsInput | string title?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - mountain?: Prisma.StringFieldUpdateOperationsInput | string + category?: Prisma.EnumActivityCategoryFieldUpdateOperationsInput | $Enums.ActivityCategory + destination?: Prisma.StringFieldUpdateOperationsInput | string location?: Prisma.StringFieldUpdateOperationsInput | string meetingPoint?: Prisma.NullableStringFieldUpdateOperationsInput | string | null itinerary?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -1293,7 +1338,8 @@ export type TripSelect = runtime.Types.Extensions.GetOmit<"id" | "title" | "description" | "mountain" | "location" | "meetingPoint" | "itinerary" | "whatsIncluded" | "whatsExcluded" | "date" | "endDate" | "maxParticipants" | "price" | "status" | "createdAt" | "updatedAt" | "organizerId", ExtArgs["result"]["trip"]> +export type TripOmit = runtime.Types.Extensions.GetOmit<"id" | "title" | "description" | "category" | "destination" | "location" | "meetingPoint" | "itinerary" | "whatsIncluded" | "whatsExcluded" | "date" | "endDate" | "maxParticipants" | "price" | "status" | "createdAt" | "updatedAt" | "organizerId", ExtArgs["result"]["trip"]> export type TripInclude = { organizer?: boolean | Prisma.UserDefaultArgs participants?: boolean | Prisma.Trip$participantsArgs @@ -1403,7 +1452,14 @@ export type $TripPayload readonly title: Prisma.FieldRef<"Trip", 'String'> readonly description: Prisma.FieldRef<"Trip", 'String'> - readonly mountain: Prisma.FieldRef<"Trip", 'String'> + readonly category: Prisma.FieldRef<"Trip", 'ActivityCategory'> + readonly destination: Prisma.FieldRef<"Trip", 'String'> readonly location: Prisma.FieldRef<"Trip", 'String'> readonly meetingPoint: Prisma.FieldRef<"Trip", 'String'> readonly itinerary: Prisma.FieldRef<"Trip", 'String'> diff --git a/app/page.tsx b/app/page.tsx index e6ad6d9..226acb9 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -4,6 +4,7 @@ import Image from "next/image"; import { tripService } from "@/server/services/trip.service"; import { TripCard } from "@/features/trip/components/trip-card"; import { siteConfig, siteUrl, absoluteUrl } from "@/lib/site"; +import { ACTIVITY_CATEGORIES, categoryMeta } from "@/lib/activity-category"; export const metadata: Metadata = { title: "Cari Teman Trip & Aktivitas — Pergi Bareng, Bukan Sendiri", @@ -135,6 +136,38 @@ export default async function HomePage() { {/* ========== CONTENT ========== */}
+ {/* Jelajah per kategori */} +
+
+
+ ✨ +
+
+

+ Jelajah per Kategori +

+

+ Hiking, diving, konser, sampai retreat +

+
+
+
+ {ACTIVITY_CATEGORIES.map((c) => { + const m = categoryMeta(c); + return ( + + {m.icon} + {m.label} + + ); + })} +
+
+ {/* Trip Terdekat */} {upcomingTrips.length > 0 && (
@@ -157,7 +190,8 @@ export default async function HomePage() { key={trip.id} id={trip.id} title={trip.title} - mountain={trip.mountain} + category={trip.category} + destination={trip.destination} location={trip.location} date={trip.date} endDate={trip.endDate} @@ -226,7 +260,8 @@ export default async function HomePage() { key={trip.id} id={trip.id} title={trip.title} - mountain={trip.mountain} + category={trip.category} + destination={trip.destination} location={trip.location} date={trip.date} endDate={trip.endDate} @@ -267,7 +302,8 @@ export default async function HomePage() { key={trip.id} id={trip.id} title={trip.title} - mountain={trip.mountain} + category={trip.category} + destination={trip.destination} location={trip.location} date={trip.date} endDate={trip.endDate} diff --git a/app/profile/page.tsx b/app/profile/page.tsx index c2d13af..072699b 100644 --- a/app/profile/page.tsx +++ b/app/profile/page.tsx @@ -100,7 +100,7 @@ export default async function ProfilePage() {
- {/* Middle: title + mountain */} + {/* Middle: title + destination */}
📍 - {trip.mountain} · {trip.location} + {trip.destination} · {trip.location}
diff --git a/app/trips/[id]/page.tsx b/app/trips/[id]/page.tsx index 3820838..fb00496 100644 --- a/app/trips/[id]/page.tsx +++ b/app/trips/[id]/page.tsx @@ -36,8 +36,8 @@ export async function generateMetadata({ }; } - const title = `${trip.title} — ${trip.mountain}`; - const fallbackDescription = `Open trip ${trip.mountain} di ${trip.location}, ${formatTripCalendarDateRangeLong(trip.date, trip.endDate)}. Harga ${formatRupiah(trip.price)}/orang, max ${trip.maxParticipants} peserta. Gabung di ${siteConfig.name}.`; + const title = `${trip.title} — ${trip.destination}`; + const fallbackDescription = `Open trip ${trip.destination} di ${trip.location}, ${formatTripCalendarDateRangeLong(trip.date, trip.endDate)}. Harga ${formatRupiah(trip.price)}/orang, max ${trip.maxParticipants} peserta. Gabung di ${siteConfig.name}.`; const description = trip.description?.replace(/\s+/g, " ").trim().slice(0, 160) || fallbackDescription; @@ -155,7 +155,7 @@ export default async function TripDetailPage({ eventAttendanceMode: "https://schema.org/OfflineEventAttendanceMode", location: { "@type": "Place", - name: trip.mountain, + name: trip.destination, address: { "@type": "PostalAddress", addressLocality: trip.location, @@ -206,7 +206,7 @@ export default async function TripDetailPage({ { "@type": "ListItem", position: 3, - name: trip.mountain, + name: trip.destination, item: tripUrl, }, ], @@ -226,7 +226,7 @@ export default async function TripDetailPage({ Open Trip / - {trip.mountain} + {trip.destination}
@@ -241,7 +241,7 @@ export default async function TripDetailPage({ {trip.title}

- 🏔️ {trip.mountain} + 🏔️ {trip.destination}

; + searchParams: Promise<{ + q?: string; + from?: string; + to?: string; + category?: string; + }>; } export async function generateMetadata({ searchParams, }: TripsPageProps): Promise { - const { q } = await searchParams; + const { q, category: categoryParam } = await searchParams; + const category = isActivityCategory(categoryParam) ? categoryParam : undefined; + const categoryName = category ? categoryLabel(category) : null; + const title = q ? `Cari Teman Trip "${q}" — Gabung Bareng` - : "Cari Teman Trip & Aktivitas — Daftar Open Trip Aktif"; + : categoryName + ? `Cari Teman ${categoryName} — Daftar Open Trip Aktif` + : "Cari Teman Trip & Aktivitas — Daftar Open Trip Aktif"; const description = q ? `Hasil pencarian "${q}" di ${siteConfig.name}. Temukan teman seperjalanan, lihat trip & organizer terverifikasi, langsung gabung.` - : `Daftar open trip aktif di ${siteConfig.name} — hiking, camping, snorkeling, city trip, dan aktivitas bareng lainnya. Pilih trip, kenal calon teman seperjalanan, dan gabung bareng — grup kecil & organizer terverifikasi.`; + : categoryName + ? `Daftar open trip ${categoryName.toLowerCase()} di ${siteConfig.name}. Pilih trip, kenal calon teman seperjalanan, dan gabung bareng — grup kecil & organizer terverifikasi.` + : `Daftar open trip aktif di ${siteConfig.name} — hiking, camping, snorkeling, city trip, dan aktivitas bareng lainnya. Pilih trip, kenal calon teman seperjalanan, dan gabung bareng — grup kecil & organizer terverifikasi.`; return { title, description, @@ -30,11 +43,13 @@ export async function generateMetadata({ export default async function TripsPage({ searchParams }: TripsPageProps) { const params = await searchParams; - const hasFilters = params.q || params.from || params.to; + const category = isActivityCategory(params.category) ? params.category : undefined; + const hasFilters = Boolean(params.q || params.from || params.to || category); const filters = { q: params.q, from: params.from, to: params.to, + category, }; const [trips, allTrips] = await Promise.all([ @@ -48,7 +63,9 @@ export default async function TripsPage({ searchParams }: TripsPageProps) {

- Cari Teman Trip & Aktivitas + {category + ? `Cari Teman ${categoryLabel(category)}` + : "Cari Teman Trip & Aktivitas"}

{hasFilters @@ -102,7 +119,8 @@ export default async function TripsPage({ searchParams }: TripsPageProps) { key={trip.id} id={trip.id} title={trip.title} - mountain={trip.mountain} + category={trip.category} + destination={trip.destination} location={trip.location} date={trip.date} endDate={trip.endDate} diff --git a/features/profile/components/profile-trip-row.tsx b/features/profile/components/profile-trip-row.tsx index edd72cc..44f2f34 100644 --- a/features/profile/components/profile-trip-row.tsx +++ b/features/profile/components/profile-trip-row.tsx @@ -5,7 +5,7 @@ import { formatTripCalendarDateRangeLong } from "@/lib/trip-dates"; interface ProfileTripRowProps { href: string; title: string; - mountain: string; + destination: string; date: Date; endDate: Date | null; rightSlot?: ReactNode; @@ -14,7 +14,7 @@ interface ProfileTripRowProps { export function ProfileTripRow({ href, title, - mountain, + destination, date, endDate, rightSlot, @@ -26,7 +26,7 @@ export function ProfileTripRow({ >

{title}

-

{mountain}

+

{destination}

{formatTripCalendarDateRangeLong(date, endDate)}

diff --git a/features/trip/actions.ts b/features/trip/actions.ts index e9a2cc3..73e376e 100644 --- a/features/trip/actions.ts +++ b/features/trip/actions.ts @@ -15,9 +15,10 @@ export async function createTripAction(formData: FormData) { } const raw = { + category: formData.get("category") as string, title: formData.get("title") as string, description: formData.get("description") as string, - mountain: formData.get("mountain") as string, + destination: formData.get("destination") as string, location: formData.get("location") as string, meetingPoint: formData.get("meetingPoint") as string, itinerary: formData.get("itinerary") as string, diff --git a/features/trip/components/create-trip-form.tsx b/features/trip/components/create-trip-form.tsx index cb557c2..3a6fd4e 100644 --- a/features/trip/components/create-trip-form.tsx +++ b/features/trip/components/create-trip-form.tsx @@ -7,17 +7,11 @@ import "react-datepicker/dist/react-datepicker.css"; import { createTripAction } from "@/features/trip/actions"; import { ImageUrlInput } from "@/features/trip/components/image-url-input"; import { formatLocalCalendarYmd } from "@/lib/trip-dates"; - -const SAMPLE_MOUNTAINS = [ - { name: "Gunung Papandayan", location: "Garut, Jawa Barat" }, - { name: "Gunung Ciremai", location: "Kuningan, Jawa Barat" }, - { name: "Gunung Pangrango", location: "Bogor/Cianjur, Jawa Barat" }, - { name: "Gunung Gede", location: "Bogor/Cianjur, Jawa Barat" }, - { name: "Gunung Tangkuban Parahu", location: "Bandung, Jawa Barat" }, - { name: "Gunung Bukit Tunggul", location: "Bandung, Jawa Barat" }, - { name: "Gunung Malabar", location: "Bandung, Jawa Barat" }, - { name: "Gunung Guntur", location: "Garut, Jawa Barat" }, -]; +import { + ACTIVITY_CATEGORIES, + categoryMeta, +} from "@/lib/activity-category"; +import type { ActivityCategory } from "@/app/generated/prisma/enums"; function formatRupiahInput(value: string): string { const num = value.replace(/\D/g, ""); @@ -37,10 +31,12 @@ export function CreateTripForm({ isVerifiedOrganizer }: CreateTripFormProps) { const [error, setError] = useState(""); const [loading, setLoading] = useState(false); + const [category, setCategory] = useState("HIKING"); const [startDate, setStartDate] = useState(null); const [endDate, setEndDate] = useState(null); const [priceDisplay, setPriceDisplay] = useState(""); + const meta = categoryMeta(category); const priceNumber = Number(parseRupiahInput(priceDisplay) || "0"); const isPaidTrip = priceNumber > 0; const blockedByVerification = isPaidTrip && !isVerifiedOrganizer; @@ -78,23 +74,6 @@ export function CreateTripForm({ isVerifiedOrganizer }: CreateTripFormProps) { } } - function handleMountainSelect(e: React.ChangeEvent) { - const selected = SAMPLE_MOUNTAINS.find((m) => m.name === e.target.value); - if (selected) { - const form = e.target.form; - if (form) { - const mountainInput = form.elements.namedItem( - "mountain" - ) as HTMLInputElement; - const locationInput = form.elements.namedItem( - "location" - ) as HTMLInputElement; - mountainInput.value = selected.name; - locationInput.value = selected.location; - } - } - } - function handleDateChange(dates: [Date | null, Date | null]) { const [start, end] = dates; setStartDate(start); @@ -115,25 +94,34 @@ export function CreateTripForm({ isVerifiedOrganizer }: CreateTripFormProps) { )}
- {/* Mountain Quick Picker */} + {/* Category Chips */}
-
@@ -152,16 +140,16 @@ export function CreateTripForm({ isVerifiedOrganizer }: CreateTripFormProps) {
-
diff --git a/features/trip/components/trip-card.tsx b/features/trip/components/trip-card.tsx index 29577db..50c9e9e 100644 --- a/features/trip/components/trip-card.tsx +++ b/features/trip/components/trip-card.tsx @@ -2,11 +2,14 @@ import Image from "next/image"; import Link from "next/link"; import { formatRupiah } from "@/lib/utils"; import { formatTripCalendarDateRangeLong } from "@/lib/trip-dates"; +import { categoryMeta } from "@/lib/activity-category"; +import type { ActivityCategory } from "@/app/generated/prisma/enums"; interface TripCardProps { id: string; title: string; - mountain: string; + category: ActivityCategory; + destination: string; location: string; date: Date | string; endDate?: Date | string | null; @@ -23,7 +26,8 @@ interface TripCardProps { export function TripCard({ id, title, - mountain, + category, + destination, location, date, endDate, @@ -38,6 +42,7 @@ export function TripCard({ }: TripCardProps) { const spotsLeft = maxParticipants - participantCount; const isSmallGroup = maxParticipants <= 10; + const meta = categoryMeta(category); return ( @@ -55,9 +60,16 @@ export function TripCard({ /> ) : (
- 🏔️ + {meta.icon}
)} + + {meta.icon} + {meta.label} + {title} -

{mountain}

+

{destination}

diff --git a/features/trip/components/trip-filter.tsx b/features/trip/components/trip-filter.tsx index db422b5..7ee2a19 100644 --- a/features/trip/components/trip-filter.tsx +++ b/features/trip/components/trip-filter.tsx @@ -5,11 +5,21 @@ import { useState } from "react"; import DatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; import { formatLocalCalendarYmd } from "@/lib/trip-dates"; +import { + ACTIVITY_CATEGORIES, + categoryMeta, + isActivityCategory, +} from "@/lib/activity-category"; +import type { ActivityCategory } from "@/app/generated/prisma/enums"; export function TripFilter() { const router = useRouter(); const searchParams = useSearchParams(); + const initialCategory = searchParams.get("category"); + const [category, setCategory] = useState( + isActivityCategory(initialCategory) ? initialCategory : null + ); const [query, setQuery] = useState(searchParams.get("q") ?? ""); const [startDate, setStartDate] = useState( searchParams.get("from") ? new Date(searchParams.get("from")!) : null @@ -18,45 +28,101 @@ export function TripFilter() { searchParams.get("to") ? new Date(searchParams.get("to")!) : null ); + function buildParams(overrides?: { category?: ActivityCategory | null }) { + const params = new URLSearchParams(); + const nextCategory = + overrides && "category" in overrides ? overrides.category : category; + if (nextCategory) params.set("category", nextCategory); + if (query.trim()) params.set("q", query.trim()); + if (startDate) params.set("from", formatLocalCalendarYmd(startDate)); + if (endDate) params.set("to", formatLocalCalendarYmd(endDate)); + return params; + } + + function pushFilters(params: URLSearchParams) { + const qs = params.toString(); + router.push(`/trips${qs ? `?${qs}` : ""}`); + } + + function handleSelectCategory(next: ActivityCategory | null) { + setCategory(next); + pushFilters(buildParams({ category: next })); + } + function handleDateChange(dates: [Date | null, Date | null]) { const [start, end] = dates; setStartDate(start); setEndDate(end); - // When both dates are cleared (via X button), auto-submit to reset results if (!start && !end) { const params = new URLSearchParams(); + if (category) params.set("category", category); if (query.trim()) params.set("q", query.trim()); - const qs = params.toString(); - router.push(`/trips${qs ? `?${qs}` : ""}`); + pushFilters(params); } } function handleSearch(e: React.FormEvent) { e.preventDefault(); - const params = new URLSearchParams(); - if (query.trim()) params.set("q", query.trim()); - if (startDate) params.set("from", formatLocalCalendarYmd(startDate)); - if (endDate) params.set("to", formatLocalCalendarYmd(endDate)); - - const qs = params.toString(); - router.push(`/trips${qs ? `?${qs}` : ""}`); + pushFilters(buildParams()); } function handleReset() { + setCategory(null); setQuery(""); setStartDate(null); setEndDate(null); router.push("/trips"); } - const hasFilters = query || startDate || endDate; + const hasFilters = category || query || startDate || endDate; return ( + {/* Category chips */} +
+ +
+ + {ACTIVITY_CATEGORIES.map((c) => { + const m = categoryMeta(c); + const active = c === category; + return ( + + ); + })} +
+
+
{/* Search input */}
diff --git a/features/trip/schemas.ts b/features/trip/schemas.ts index defd5bd..622ec3a 100644 --- a/features/trip/schemas.ts +++ b/features/trip/schemas.ts @@ -1,5 +1,7 @@ import { z } from "zod/v4"; import { LIMITS } from "@/lib/limits"; +import { ACTIVITY_CATEGORIES } from "@/lib/activity-category"; +import type { ActivityCategory } from "@/app/generated/prisma/enums"; import { isTripDepartureDayPast, tripStoredInstantFromYmd, @@ -17,6 +19,10 @@ export const tripImageUrlsSchema = z export const createTripSchema = z .object({ + category: z.enum( + ACTIVITY_CATEGORIES as [ActivityCategory, ...ActivityCategory[]], + { message: "Kategori aktivitas tidak valid" } + ), title: z .string() .trim() @@ -39,13 +45,13 @@ export const createTripSchema = z ) .optional() ), - mountain: z + destination: z .string() .trim() .min(2, "Destinasi harus diisi") .max( - LIMITS.MAX_MOUNTAIN_LENGTH, - `Destinasi maksimal ${LIMITS.MAX_MOUNTAIN_LENGTH} karakter` + LIMITS.MAX_DESTINATION_LENGTH, + `Destinasi maksimal ${LIMITS.MAX_DESTINATION_LENGTH} karakter` ), location: z .string() diff --git a/lib/activity-category.ts b/lib/activity-category.ts new file mode 100644 index 0000000..532e6c3 --- /dev/null +++ b/lib/activity-category.ts @@ -0,0 +1,104 @@ +import { ActivityCategory } from "@/app/generated/prisma/enums"; + +export const ACTIVITY_CATEGORIES: ActivityCategory[] = [ + "HIKING", + "CAMPING", + "SNORKELING", + "DIVING", + "ISLAND_HOPPING", + "CITY_TRIP", + "CULINARY", + "CONCERT", + "WORKSHOP", + "RETREAT", +]; + +interface CategoryMeta { + label: string; + icon: string; + /// Label untuk field destinasi/subjek aktivitas yang berbeda per kategori. + destinationLabel: string; + destinationPlaceholder: string; +} + +const META: Record = { + HIKING: { + label: "Hiking", + icon: "🏔️", + destinationLabel: "Nama Gunung", + destinationPlaceholder: "Gunung Papandayan", + }, + CAMPING: { + label: "Camping", + icon: "🏕️", + destinationLabel: "Lokasi Camping", + destinationPlaceholder: "Ranca Upas", + }, + SNORKELING: { + label: "Snorkeling", + icon: "🤿", + destinationLabel: "Spot Snorkeling", + destinationPlaceholder: "Pulau Pahawang", + }, + DIVING: { + label: "Diving", + icon: "🐠", + destinationLabel: "Spot Diving", + destinationPlaceholder: "Tulamben Bali", + }, + ISLAND_HOPPING: { + label: "Island Hopping", + icon: "🏝️", + destinationLabel: "Pulau Tujuan", + destinationPlaceholder: "Kepulauan Seribu", + }, + CITY_TRIP: { + label: "City Trip", + icon: "🏙️", + destinationLabel: "Kota Tujuan", + destinationPlaceholder: "Yogyakarta", + }, + CULINARY: { + label: "Kulineran", + icon: "🍜", + destinationLabel: "Tema Kuliner", + destinationPlaceholder: "Street Food Bandung", + }, + CONCERT: { + label: "Konser", + icon: "🎤", + destinationLabel: "Konser / Artis", + destinationPlaceholder: "Coldplay Jakarta", + }, + WORKSHOP: { + label: "Workshop", + icon: "🛠️", + destinationLabel: "Topik Workshop", + destinationPlaceholder: "Fotografi Lanskap", + }, + RETREAT: { + label: "Retreat", + icon: "🧘", + destinationLabel: "Tema Retreat", + destinationPlaceholder: "Mindfulness Ubud", + }, +}; + +export function categoryMeta(category: ActivityCategory): CategoryMeta { + return META[category]; +} + +export function categoryLabel(category: ActivityCategory): string { + return META[category].label; +} + +export function categoryIcon(category: ActivityCategory): string { + return META[category].icon; +} + +export function isActivityCategory(value: unknown): value is ActivityCategory { + return ( + typeof value === "string" && + (ACTIVITY_CATEGORIES as string[]).includes(value) + ); +} diff --git a/lib/limits.ts b/lib/limits.ts index 619fa09..4bb9460 100644 --- a/lib/limits.ts +++ b/lib/limits.ts @@ -7,7 +7,7 @@ export const LIMITS = { MAX_PARTICIPANTS: 15, MAX_PRICE_IDR: 100_000_000, MAX_TITLE_LENGTH: 120, - MAX_MOUNTAIN_LENGTH: 100, + MAX_DESTINATION_LENGTH: 100, MAX_LOCATION_LENGTH: 120, MAX_DESCRIPTION_LENGTH: 5000, /** Meeting point & tiap blok include/exclude */ diff --git a/prisma/migrations/20260507182837_add_activity_category/migration.sql b/prisma/migrations/20260507182837_add_activity_category/migration.sql new file mode 100644 index 0000000..fb455a3 --- /dev/null +++ b/prisma/migrations/20260507182837_add_activity_category/migration.sql @@ -0,0 +1,8 @@ +-- CreateEnum +CREATE TYPE "ActivityCategory" AS ENUM ('HIKING', 'CAMPING', 'SNORKELING', 'DIVING', 'ISLAND_HOPPING', 'CITY_TRIP', 'CULINARY', 'CONCERT', 'WORKSHOP', 'RETREAT'); + +-- AlterTable +ALTER TABLE "Trip" ADD COLUMN "category" "ActivityCategory" NOT NULL DEFAULT 'HIKING'; + +-- CreateIndex +CREATE INDEX "Trip_category_status_date_idx" ON "Trip"("category", "status", "date"); diff --git a/prisma/migrations/20260507184040_rename_mountain_to_destination/migration.sql b/prisma/migrations/20260507184040_rename_mountain_to_destination/migration.sql new file mode 100644 index 0000000..cba4b22 --- /dev/null +++ b/prisma/migrations/20260507184040_rename_mountain_to_destination/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable: rename column without data loss +ALTER TABLE "Trip" RENAME COLUMN "mountain" TO "destination"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 906bd31..96c362c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -97,7 +97,10 @@ model Trip { id String @id @default(cuid()) title String description String? - mountain String + /// Kategori aktivitas. + category ActivityCategory @default(HIKING) + /// Destinasi/subjek aktivitas — interpretasinya tergantung kategori (gunung untuk HIKING, spot untuk DIVING, venue untuk CONCERT, tema untuk WORKSHOP, dst). + destination String location String /// Titik kumpul / meeting point (teks bebas) meetingPoint String? @@ -121,6 +124,8 @@ model Trip { participants TripParticipant[] images TripImage[] reviews TripReview[] + + @@index([category, status, date]) } model TripReview { @@ -174,6 +179,19 @@ enum TripStatus { COMPLETED } +enum ActivityCategory { + HIKING + CAMPING + SNORKELING + DIVING + ISLAND_HOPPING + CITY_TRIP + CULINARY + CONCERT + WORKSHOP + RETREAT +} + enum ParticipantStatus { PENDING CONFIRMED diff --git a/prisma/seed.ts b/prisma/seed.ts index 3bbc028..c2bfc4a 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -24,70 +24,29 @@ async function main() { const password = await bcrypt.hash("password123", 12); - // Organizer const dede = await prisma.user.create({ - data: { - name: "Dede Inoen", - email: "dede.inoen@setrip.id", - password, - }, + data: { name: "Dede Inoen", email: "dede.inoen@setrip.id", password }, }); - const panji = await prisma.user.create({ - data: { - name: "Panji Petualang", - email: "panji@setrip.id", - password, - }, + data: { name: "Panji Petualang", email: "panji@setrip.id", password }, }); - const fiersa = await prisma.user.create({ - data: { - name: "Fiersa Besari", - email: "fiersa@setrip.id", - password, - }, + 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, - }, + data: { name: "Budi Santoso", email: "budi@gmail.com", password }, }); - const sari = await prisma.user.create({ - data: { - name: "Sari Dewi", - email: "sari@gmail.com", - password, - }, + data: { name: "Sari Dewi", email: "sari@gmail.com", password }, }); - const doni = await prisma.user.create({ - data: { - name: "Doni Prasetyo", - email: "doni@gmail.com", - password, - }, + data: { name: "Doni Prasetyo", email: "doni@gmail.com", password }, }); - const maya = await prisma.user.create({ - data: { - name: "Maya Putri", - email: "maya@gmail.com", - password, - }, + data: { name: "Maya Putri", email: "maya@gmail.com", password }, }); - const raka = await prisma.user.create({ - data: { - name: "Raka Aditya", - email: "raka@gmail.com", - password, - }, + data: { name: "Raka Aditya", email: "raka@gmail.com", password }, }); console.log("✅ Users created"); @@ -140,278 +99,439 @@ async function main() { // ==================== TRIPS + IMAGES ==================== /** - * Tanggal disimpan eksplisit di UTC agar filter `from`/`to` (YYYY-MM-DD UTC) - * cocok dengan yang tampil di daftar. - * - * - Multi hari: isi `endDate` = hari terakhir trip (UTC). - * - Satu hari / night hike satu malam: `endDate` null — filter memakai instan `date` - * dalam rentang hari UTC yang sama (jam tetap masuk hari itu). + * Tanggal disimpan eksplisit di UTC. Multi hari isi `endDate` (hari terakhir + * trip). Trip 1 hari / night-event: `endDate` null. */ const utc = (y: number, m0: number, d: number, h = 12, min = 0) => new Date(Date.UTC(y, m0, d, h, min, 0, 0)); - // Unsplash mountain photos (URL CDN publik, gratis, stabil). - // Slug ID di komentar = id di unsplash.com/photos/{slug} buat ditelusuri ulang. + // Unsplash CDN photo helper. Slug ID di komentar = id di unsplash.com/photos/{slug}. const img = (id: string) => `https://images.unsplash.com/photo-${id}?w=1200&q=80&auto=format&fit=crop`; - const MOUNTAIN_PHOTOS = { - papandayan1: img("1554629947-334ff61d85dc"), // xfngap_DToE - papandayan2: img("1464822759023-fed622ff2c3b"), // Bkci_8qcdvQ - papandayan3: img("1454496522488-7a8e488e8606"), // 9wg5jCEPBsw - ciremai1: img("1480497490787-505ec076689f"), // 6bKxagnIDtk - ciremai2: img("1483728642387-6c3bdd6c93e5"), // YFFGkE3y4F8 - ciremai3: img("1502085671122-2d218cd434e6"), // NNmiv6zcFvk - gede1: img("1478059299873-f047d8c5fe1a"), // DXQB5D1njMY - gede2: img("1519681393784-d120267933ba"), // z8ct_Q3oCqM - gede3: img("1501785888041-af3ef285b470"), // T7K4aEPoGGk - gede4: img("1540979388789-6cee28a1cdc9"), // eUFfY6cwjSU - tangkuban1: img("1506905925346-21bda4d32df4"), // 1527pjeb6jg - tangkuban2: img("1490682143684-14369e18dce8"), // 8c6eS43iq1o - malabar1: img("1494548162494-384bba4ab999"), // xP_AGmeEa6s - malabar2: img("1500964757637-c85e8a162699"), // twukN12EN7c - malabar3: img("1549880181-56a44cf4a9a5"), // ePpaQC2c1xA - guntur1: img("1558883493-8b86ff880fec"), // vaG8rOJLDHo - guntur2: img("1554629947-334ff61d85dc"), // reuse — xfngap_DToE - guntur3: img("1464822759023-fed622ff2c3b"), // reuse — Bkci_8qcdvQ - } as const; - // --- Trip 1: Papandayan (by Dede Inoen) — 2 hari --- - const trip1 = await prisma.trip.create({ + // --- HIKING: Papandayan --- + const tripHiking = await prisma.trip.create({ data: { + category: "HIKING", title: "Open Trip Papandayan Weekend", description: `Pendakian santai ke Gunung Papandayan, cocok untuk pemula! ⚠️ Bawa: Sleeping bag, jaket, headlamp, air 2L`, - meetingPoint: - "Alun-alun Garut (depan pendopo), Sabtu 05:00 WIB — detail grup WA.", + meetingPoint: "Alun-alun Garut, Sabtu 05:00 WIB — detail grup WA.", itinerary: `Sabtu • 05:00 Meeting & briefing • 07:00 Berangkat menuju basecamp -• 12:00 Makan siang trail • 15:00 Camp area Pondok Salada Minggu • 04:00 Summit attack -• 08:00 Sarap & packing • 11:00 Turun • 16:00 Estimasi kembali ke Garut`, whatsIncluded: `• Transport PP Garut–basecamp • Guide lokal -• Tenda tim (kapasitas sesuai muatan) -• Konsumsi: makan 3x + snack`, - whatsExcluded: `• Tiket masuk TNGGP -• Sleeping bag & matras pribadi +• Tenda tim +• Konsumsi 3x + snack`, + whatsExcluded: `• Tiket masuk TN +• Sleeping bag pribadi • Asuransi perjalanan`, - mountain: "Gunung Papandayan", + destination: "Gunung Papandayan", location: "Garut, Jawa Barat", - date: utc(2026, 3, 23, 8, 0), - endDate: utc(2026, 3, 24, 18, 0), + date: utc(2026, 5, 13, 22, 0), + endDate: utc(2026, 5, 14, 18, 0), maxParticipants: 10, price: 250000, status: "OPEN", organizerId: dede.id, images: { create: [ - { url: MOUNTAIN_PHOTOS.papandayan1, caption: "Kawah Papandayan", order: 0 }, - { url: MOUNTAIN_PHOTOS.papandayan2, caption: "Track menuju puncak", order: 1 }, - { url: MOUNTAIN_PHOTOS.papandayan3, caption: "Camping ground Pondok Salada", order: 2 }, + { url: img("1554629947-334ff61d85dc"), caption: "Kawah Papandayan", order: 0 }, + { url: img("1464822759023-fed622ff2c3b"), caption: "Track menuju puncak", order: 1 }, ], }, }, }); - // --- Trip 2: Ciremai (by Panji Petualang) — 2 hari --- - const trip2 = await prisma.trip.create({ + // --- HIKING: Ciremai --- + const tripHikingCiremai = await prisma.trip.create({ data: { + category: "HIKING", title: "Pendakian Ciremai via Apuy", description: `Trip ke puncak tertinggi Jawa Barat! 🏔️ 📍 Meeting Point: Stasiun Kuningan, 04:00 WIB -🎒 Fasilitas: Transport lokal, guide, logistik -⚠️ Level: Menengah — perlu stamina baik - -Itinerary: -- Hari 1: Basecamp → Pos 3 → Camp -- Hari 2: Summit attack → Turun → Pulang`, - mountain: "Gunung Ciremai", +⚠️ Level: Menengah — perlu stamina baik`, + destination: "Gunung Ciremai", location: "Kuningan, Jawa Barat", - date: utc(2026, 3, 25, 4, 0), - endDate: utc(2026, 3, 26, 18, 0), + date: utc(2026, 5, 23, 4, 0), + endDate: utc(2026, 5, 24, 18, 0), maxParticipants: 8, price: 350000, status: "OPEN", organizerId: panji.id, images: { create: [ - { url: MOUNTAIN_PHOTOS.ciremai1, caption: "Puncak Ciremai 3.078 mdpl", order: 0 }, - { url: MOUNTAIN_PHOTOS.ciremai2, caption: "Jalur pendakian via Apuy", order: 1 }, - { url: MOUNTAIN_PHOTOS.ciremai3, caption: "Sunrise dari puncak", order: 2 }, + { url: img("1480497490787-505ec076689f"), caption: "Puncak Ciremai 3.078 mdpl", order: 0 }, + { url: img("1502085671122-2d218cd434e6"), caption: "Sunrise dari puncak", order: 1 }, ], }, }, }); - // --- Trip 3: Gede-Pangrango (by Fiersa Besari) — 2 hari --- - const trip3 = await prisma.trip.create({ + // --- CAMPING: Ranca Upas --- + const tripCamping = await prisma.trip.create({ data: { - title: "Sunrise Trip Gede-Pangrango", - description: `Combo 2 puncak sekaligus! Gede + Pangrango. + category: "CAMPING", + title: "Camping Santai di Ranca Upas", + description: `Camping bareng di tengah hutan pinus dengan ditemani rusa-rusa! Cocok buat first-timer. -📍 Meeting Point: Cibodas, 22:00 WIB (malam) -🎒 Fasilitas: Guide, tenda, makan -⚠️ Level: Advance — night hike - -Start malam, summit saat sunrise. View epic dijamin!`, - mountain: "Gunung Gede", - location: "Bogor/Cianjur, Jawa Barat", - date: utc(2026, 3, 27, 22, 0), - endDate: utc(2026, 3, 28, 16, 0), +📍 Meeting Point: Lembang, Sabtu 13:00 WIB +🎒 Fasilitas: Tenda dome, sleeping bag, BBQ, api unggun +🔥 Bonus: Live music akustik malam hari`, + meetingPoint: "Pertigaan Pasar Lembang, Sabtu 13:00 WIB", + whatsIncluded: `• Tenda + sleeping bag + matras +• Logistik camp +• Makan malam BBQ + sarapan +• Tiket masuk lokasi`, + whatsExcluded: `• Transport pribadi +• Snack tambahan`, + destination: "Ranca Upas", + location: "Bandung Selatan, Jawa Barat", + date: utc(2026, 5, 16, 6, 0), + endDate: utc(2026, 5, 17, 12, 0), maxParticipants: 12, - price: 280000, - status: "OPEN", - organizerId: fiersa.id, - images: { - create: [ - { url: MOUNTAIN_PHOTOS.gede1, caption: "Puncak Gunung Gede", order: 0 }, - { url: MOUNTAIN_PHOTOS.gede2, caption: "Surya Kencana padang edelweis", order: 1 }, - { url: MOUNTAIN_PHOTOS.gede3, caption: "Blue lake / Danau Biru", order: 2 }, - { url: MOUNTAIN_PHOTOS.gede4, caption: "Night hike track Cibodas", order: 3 }, - ], - }, - }, - }); - - // --- Trip 4: Tangkuban Parahu (by Dede Inoen) — 1 hari --- - const trip4 = await prisma.trip.create({ - data: { - title: "Trip Hemat Tangkuban Parahu", - description: `Trip santai ke kawah Tangkuban Parahu. Cocok buat first-timer! - -📍 Meeting Point: Lembang, 07:00 WIB -🎒 Fasilitas: Transport, snack, guide -⚠️ Level: Easy — bisa pakai sandal gunung - -Explore Kawah Ratu, Kawah Domas, foto-foto, terus makan sate maranggi!`, - mountain: "Gunung Tangkuban Parahu", - location: "Bandung, Jawa Barat", - date: utc(2026, 3, 22, 0, 0), - endDate: null, - maxParticipants: 15, - price: 120000, + price: 220000, status: "OPEN", organizerId: dede.id, images: { create: [ - { url: MOUNTAIN_PHOTOS.tangkuban1, caption: "Kawah Ratu", order: 0 }, - { url: MOUNTAIN_PHOTOS.tangkuban2, caption: "Kawah Domas", order: 1 }, + { url: img("1504280390367-361c6d9f38f4"), caption: "Tenda di hutan pinus", order: 0 }, + { url: img("1517824806704-9040b037703b"), caption: "Sunset di camp", order: 1 }, ], }, }, }); - // --- Trip 5: Malabar (by Fiersa Besari) — 1 hari (night hike, `endDate` null) --- - const trip5 = await prisma.trip.create({ + // --- SNORKELING: Pulau Pahawang --- + const tripSnorkel = await prisma.trip.create({ data: { - title: "Malabar Night Hike", - description: `Night hike ke Gunung Malabar — view kota Bandung dari atas! + category: "SNORKELING", + title: "Snorkeling Pulau Pahawang", + description: `Air kristal-jernih, ikan warna-warni, dan pasir putih lembut. Spot terumbu karang Pahawang Kecil masuk daftar must-visit di Lampung. -📍 Meeting Point: Pangalengan, 20:00 WIB -🎒 Fasilitas: Guide, teh hangat di puncak -⚠️ Bawa: Headlamp WAJIB, jaket tebal - -Trip ringan, 3-4 jam naik. Cocok buat yang mau healing malam-malam.`, - mountain: "Gunung Malabar", - location: "Bandung, Jawa Barat", - date: utc(2026, 3, 20, 14, 0), +🤿 Pemula friendly — guide profesional +📷 Underwater photo session included`, + meetingPoint: "Dermaga Ketapang, Lampung Selatan, 07:00 WIB", + whatsIncluded: `• Boat PP +• Alat snorkel (masker, fin, life vest) +• Guide & pemandu underwater +• Konsumsi 2x`, + whatsExcluded: `• Transport ke Lampung +• Penginapan Sabtu malam`, + destination: "Pulau Pahawang Kecil", + location: "Lampung Selatan, Lampung", + date: utc(2026, 5, 30, 0, 0), endDate: null, maxParticipants: 10, - price: 150000, - status: "OPEN", - organizerId: fiersa.id, - images: { - create: [ - { url: MOUNTAIN_PHOTOS.malabar1, caption: "Puncak Malabar malam hari", order: 0 }, - { url: MOUNTAIN_PHOTOS.malabar2, caption: "View Bandung dari atas", order: 1 }, - { url: MOUNTAIN_PHOTOS.malabar3, caption: "Track pendakian", order: 2 }, - ], - }, - }, - }); - - // --- Trip 6: Guntur (by Panji Petualang) — 2 hari --- - const trip6 = await prisma.trip.create({ - data: { - title: "Guntur Challenge Trip", - description: `Trip ke Gunung Guntur — jalur menantang tapi worth it! - -📍 Meeting Point: Alun-alun Garut, 04:30 WIB -🎒 Fasilitas: Transport, guide, logistik -⚠️ Level: Hard — medan berbatu & terjal - -Buat yang suka challenge. Pemandangan kawah aktif dari dekat!`, - mountain: "Gunung Guntur", - location: "Garut, Jawa Barat", - date: utc(2026, 3, 30, 4, 0), - endDate: utc(2026, 4, 1, 18, 0), - maxParticipants: 8, - price: 300000, + price: 380000, status: "OPEN", organizerId: panji.id, images: { create: [ - { url: MOUNTAIN_PHOTOS.guntur1, caption: "Kawah aktif Gunung Guntur", order: 0 }, - { url: MOUNTAIN_PHOTOS.guntur2, caption: "Jalur berbatu menuju puncak", order: 1 }, - { url: MOUNTAIN_PHOTOS.guntur3, caption: "View dari puncak", order: 2 }, + { url: img("1583212292454-1fe6229603b7"), caption: "Snorkeling di Pahawang", order: 0 }, + { url: img("1559825481-12a05cc00344"), caption: "Pasir putih Pahawang Kecil", order: 1 }, ], }, }, }); - console.log("✅ 6 Trips + images created (tanggal UTC + endDate untuk trip multi hari)\n"); - console.log( - ` Guntur: ${trip6.title} ${trip6.date.toISOString().slice(0, 10)} → ${trip6.endDate?.toISOString().slice(0, 10) ?? "-"}\n` - ); + // --- DIVING: Tulamben --- + const tripDiving = await prisma.trip.create({ + data: { + category: "DIVING", + title: "Fun Dive Tulamben — USS Liberty Wreck", + description: `Dive trip ke USS Liberty Wreck, salah satu wreck dive paling ikonik di dunia. Visibility tinggi, kedalaman ramah open water diver. + +⚠️ Sertifikasi minimal: Open Water (PADI/SSI)`, + meetingPoint: "Dive shop Tulamben, 06:30 WITA", + whatsIncluded: `• 2x dive guided +• Full gear rental +• Tank & weight +• Konsumsi siang`, + whatsExcluded: `• Transport ke Bali +• Penginapan +• Sertifikasi (cek validitas)`, + destination: "USS Liberty Wreck", + location: "Tulamben, Karangasem, Bali", + date: utc(2026, 6, 4, 0, 0), + endDate: utc(2026, 6, 5, 12, 0), + maxParticipants: 6, + price: 1850000, + status: "OPEN", + organizerId: fiersa.id, + images: { + create: [ + { url: img("1544551763-46a013bb70d5"), caption: "Wreck dive Tulamben", order: 0 }, + { url: img("1566024287286-457247b70310"), caption: "Reef Tulamben", order: 1 }, + ], + }, + }, + }); + + // --- ISLAND HOPPING: Karimun Jawa --- + const tripIslandHop = await prisma.trip.create({ + data: { + category: "ISLAND_HOPPING", + title: "Karimun Jawa Island Hopping 3D2N", + description: `Hopping 5 pulau favorit di Karimun Jawa: Menjangan Kecil, Menjangan Besar, Cemara, Cilik, Geleang. Snorkeling, sunset, dan barbeque tepi pantai. + +🏝️ Cocok untuk solo traveler & couple`, + meetingPoint: "Pelabuhan Kartini Jepara, Jumat 07:00 WIB", + whatsIncluded: `• Tiket kapal feri PP Jepara–Karimun +• Homestay 2 malam (twin sharing) +• Boat hopping 2 hari +• Alat snorkel +• Makan 6x`, + whatsExcluded: `• Transport ke Jepara +• Tiket pesawat`, + destination: "Kepulauan Karimun Jawa", + location: "Jepara, Jawa Tengah", + date: utc(2026, 6, 12, 0, 0), + endDate: utc(2026, 6, 14, 18, 0), + maxParticipants: 12, + price: 1450000, + status: "OPEN", + organizerId: panji.id, + images: { + create: [ + { url: img("1507525428034-b723cf961d3e"), caption: "Pantai Karimun", order: 0 }, + { url: img("1519046904884-53103b34b206"), caption: "Boat hopping", order: 1 }, + ], + }, + }, + }); + + // --- CITY TRIP: Yogyakarta --- + const tripCityTrip = await prisma.trip.create({ + data: { + category: "CITY_TRIP", + title: "City Trip Jogja Hidden Gems", + description: `Bukan Malioboro lagi. Trip jelajah Jogja sisi 'lokal' — Kotagede, Tamansari, Kalibiru, sampai angkringan andalan warga. + +🚐 Mobil grup, bukan tour bus`, + meetingPoint: "Stasiun Tugu Yogyakarta, Sabtu 08:00 WIB", + whatsIncluded: `• Transport mobil grup 2 hari +• Tour leader lokal +• Makan 3x (kuliner lokal) +• Tiket masuk semua spot`, + whatsExcluded: `• Transport ke Jogja +• Penginapan (rekomendasi disediakan)`, + destination: "Yogyakarta", + location: "Yogyakarta", + date: utc(2026, 5, 22, 0, 0), + endDate: utc(2026, 5, 23, 20, 0), + maxParticipants: 8, + price: 650000, + status: "OPEN", + organizerId: fiersa.id, + images: { + create: [ + { url: img("1596402184320-417e7178b2cd"), caption: "Tamansari", order: 0 }, + { url: img("1583309217394-d191d747bc66"), caption: "Sudut Jogja", order: 1 }, + ], + }, + }, + }); + + // --- CULINARY: Bandung Street Food --- + const tripCulinary = await prisma.trip.create({ + data: { + category: "CULINARY", + title: "Kulineran Street Food Bandung", + description: `Hopping 8 spot kuliner legend Bandung dalam satu hari: Surabi Enhaii, Mie Kocok Mang Dadeng, Lotek Kalipah Apo, sampai Es Cendol Elizabeth. + +🍜 Cocok buat foodie & first-timer`, + meetingPoint: "Stasiun Bandung pintu utara, 09:00 WIB", + whatsIncluded: `• Transport angkot/grup +• Tour leader food explorer +• Sample setiap spot (8 tempat)`, + whatsExcluded: `• Pembelian extra di luar sample`, + destination: "Street Food Tour Bandung", + location: "Bandung, Jawa Barat", + date: utc(2026, 5, 17, 0, 0), + endDate: null, + maxParticipants: 8, + price: 175000, + status: "OPEN", + organizerId: dede.id, + images: { + create: [ + { url: img("1565299624946-b28f40a0ae38"), caption: "Street food", order: 0 }, + ], + }, + }, + }); + + // --- CONCERT: Coldplay Jakarta --- + const tripConcert = await prisma.trip.create({ + data: { + category: "CONCERT", + title: "Nonton Coldplay Bareng — Music of the Spheres Jakarta", + description: `Cari teman buat nonton Coldplay tapi gak mau nonton sendirian? Gabung grup ini. + +🎤 Tiket BUKAN termasuk — peserta bawa tiket masing-masing +🤝 Grup hanya untuk koordinasi meet-up & after-party`, + meetingPoint: "Plaza GBK, depan loket Cat 1, 17:00 WIB", + whatsIncluded: `• Koordinasi grup +• Foto bareng pre-show +• After-party dinner di Senayan`, + whatsExcluded: `• Tiket konser (bawa sendiri!) +• Transport ke GBK`, + destination: "Coldplay — Music of the Spheres", + location: "Stadion Utama GBK, Jakarta", + date: utc(2026, 6, 20, 10, 0), + endDate: null, + maxParticipants: 6, + price: 0, + status: "OPEN", + organizerId: fiersa.id, + images: { + create: [ + { url: img("1470229722913-7c0e2dbbafd3"), caption: "Konser malam", order: 0 }, + ], + }, + }, + }); + + // --- WORKSHOP: Fotografi Lanskap --- + const tripWorkshop = await prisma.trip.create({ + data: { + category: "WORKSHOP", + title: "Workshop Fotografi Lanskap — Pangalengan", + description: `Belajar fotografi lanskap langsung di lapangan. Sunrise di kebun teh, golden hour di danau, milky way di malam hari (cuaca permitting). + +📷 Bawa kamera DSLR/mirrorless + tripod +👨‍🏫 Mentor: fotografer pro (10+ tahun pengalaman)`, + meetingPoint: "Alun-alun Pangalengan, Sabtu 04:00 WIB", + whatsIncluded: `• Materi workshop (briefing + on-field) +• Tour leader & mentor +• Penginapan villa 1 malam +• Konsumsi 3x`, + whatsExcluded: `• Kamera & tripod (bawa sendiri) +• Transport ke Pangalengan`, + destination: "Fotografi Lanskap", + location: "Pangalengan, Bandung Selatan", + date: utc(2026, 6, 6, 0, 0), + endDate: utc(2026, 6, 7, 18, 0), + maxParticipants: 6, + price: 850000, + status: "OPEN", + organizerId: panji.id, + images: { + create: [ + { url: img("1452587925148-ce544e77e70d"), caption: "Sunrise kebun teh", order: 0 }, + { url: img("1444080748397-f442aa95c3e5"), caption: "Workshop on-field", order: 1 }, + ], + }, + }, + }); + + // --- RETREAT: Mindfulness Ubud --- + const tripRetreat = await prisma.trip.create({ + data: { + category: "RETREAT", + title: "Mindfulness Retreat 3D — Ubud", + description: `Retreat 3 hari di tengah sawah Ubud. Yoga pagi, meditasi guided, journaling, dan sound healing. + +🧘 Untuk yang lagi burnout & butuh reset +👥 Grup kecil (max 8) — pengalaman akrab`, + meetingPoint: "Villa Sawah Ubud (alamat dikirim H-3 via WA)", + whatsIncluded: `• Penginapan villa 2 malam +• Yoga 4 sesi + meditasi 6 sesi +• Sound healing (1 sesi) +• Konsumsi vegan 6x +• Welcome kit (jurnal, herbal tea)`, + whatsExcluded: `• Transport ke Ubud +• Treatment spa opsional`, + destination: "Mindfulness Retreat Ubud", + location: "Ubud, Gianyar, Bali", + date: utc(2026, 6, 26, 0, 0), + endDate: utc(2026, 6, 28, 14, 0), + maxParticipants: 8, + price: 2400000, + status: "OPEN", + organizerId: fiersa.id, + images: { + create: [ + { url: img("1545389336-cf090694435e"), caption: "Yoga di sawah Ubud", order: 0 }, + { url: img("1518609878373-06d740f60d8b"), caption: "Villa retreat", order: 1 }, + ], + }, + }, + }); + + console.log("✅ 11 Trips dibuat (10 kategori, semua tanggal masa depan)\n"); // ==================== PARTICIPANTS ==================== await prisma.tripParticipant.createMany({ data: [ - // 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" }, + // Hiking Papandayan — 4 peserta + { tripId: tripHiking.id, userId: budi.id, status: "CONFIRMED" }, + { tripId: tripHiking.id, userId: sari.id, status: "CONFIRMED" }, + { tripId: tripHiking.id, userId: doni.id, status: "CONFIRMED" }, + { tripId: tripHiking.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" }, + // Hiking Ciremai — 2 peserta + { tripId: tripHikingCiremai.id, userId: budi.id, status: "CONFIRMED" }, + { tripId: tripHikingCiremai.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" }, + // Camping — 5 peserta + { tripId: tripCamping.id, userId: budi.id, status: "CONFIRMED" }, + { tripId: tripCamping.id, userId: sari.id, status: "CONFIRMED" }, + { tripId: tripCamping.id, userId: doni.id, status: "CONFIRMED" }, + { tripId: tripCamping.id, userId: maya.id, status: "CONFIRMED" }, + { tripId: tripCamping.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" }, + // Snorkeling — 3 peserta + { tripId: tripSnorkel.id, userId: sari.id, status: "CONFIRMED" }, + { tripId: tripSnorkel.id, userId: maya.id, status: "CONFIRMED" }, + { tripId: tripSnorkel.id, userId: raka.id, status: "PENDING" }, - // Malabar — 2 peserta - { tripId: trip5.id, userId: sari.id, status: "CONFIRMED" }, - { tripId: trip5.id, userId: maya.id, status: "CONFIRMED" }, + // Diving — 1 peserta (paid trip, mahal) + { tripId: tripDiving.id, userId: doni.id, status: "PENDING" }, - // Guntur — 0 peserta + // Island hopping — 4 peserta + { tripId: tripIslandHop.id, userId: budi.id, status: "CONFIRMED" }, + { tripId: tripIslandHop.id, userId: sari.id, status: "CONFIRMED" }, + { tripId: tripIslandHop.id, userId: maya.id, status: "CONFIRMED" }, + { tripId: tripIslandHop.id, userId: raka.id, status: "PENDING" }, + + // City trip — 3 peserta + { tripId: tripCityTrip.id, userId: budi.id, status: "CONFIRMED" }, + { tripId: tripCityTrip.id, userId: maya.id, status: "CONFIRMED" }, + { tripId: tripCityTrip.id, userId: sari.id, status: "PENDING" }, + + // Culinary — 5 peserta + { tripId: tripCulinary.id, userId: budi.id, status: "CONFIRMED" }, + { tripId: tripCulinary.id, userId: sari.id, status: "CONFIRMED" }, + { tripId: tripCulinary.id, userId: doni.id, status: "CONFIRMED" }, + { tripId: tripCulinary.id, userId: maya.id, status: "CONFIRMED" }, + { tripId: tripCulinary.id, userId: raka.id, status: "CONFIRMED" }, + + // Concert — 2 peserta + { tripId: tripConcert.id, userId: maya.id, status: "CONFIRMED" }, + { tripId: tripConcert.id, userId: raka.id, status: "CONFIRMED" }, + + // Workshop — 2 peserta + { tripId: tripWorkshop.id, userId: doni.id, status: "CONFIRMED" }, + { tripId: tripWorkshop.id, userId: sari.id, status: "CONFIRMED" }, + + // Retreat — 1 peserta (mahal, niche) + { tripId: tripRetreat.id, userId: maya.id, status: "PENDING" }, ], }); - 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("✅ Participants joined (mix CONFIRMED & PENDING per trip)\n"); console.log("🎉 Seed complete!"); } diff --git a/server/repositories/trip.repo.ts b/server/repositories/trip.repo.ts index c9aa87b..7b989a6 100644 --- a/server/repositories/trip.repo.ts +++ b/server/repositories/trip.repo.ts @@ -1,5 +1,6 @@ import { prisma } from "@/lib/prisma"; import { Prisma } from "@/app/generated/prisma/client"; +import type { ActivityCategory } from "@/app/generated/prisma/enums"; import { utcStartOfDay, utcDayStartFromYmd, @@ -7,6 +8,13 @@ import { maxUtcDate, } from "@/lib/trip-dates"; +export interface TripFilters { + q?: string; + from?: string; + to?: string; + category?: ActivityCategory; +} + export const tripRepo = { async findAll() { return prisma.trip.findMany({ @@ -30,11 +38,15 @@ export const tripRepo = { }); }, - async findOpen(filters?: { q?: string; from?: string; to?: string }) { + async findOpen(filters?: TripFilters) { const todayStart = utcStartOfDay(new Date()); const andParts: Prisma.TripWhereInput[] = [{ status: "OPEN" }]; + if (filters?.category) { + andParts.push({ category: filters.category }); + } + if (!filters?.from && !filters?.to) { andParts.push({ date: { gte: todayStart } }); } else { @@ -72,7 +84,7 @@ export const tripRepo = { andParts.push({ OR: [ { title: { contains: filters.q, mode: "insensitive" } }, - { mountain: { contains: filters.q, mode: "insensitive" } }, + { destination: { contains: filters.q, mode: "insensitive" } }, { location: { contains: filters.q, mode: "insensitive" } }, ], }); diff --git a/server/services/trip.service.ts b/server/services/trip.service.ts index 17183bb..f40824d 100644 --- a/server/services/trip.service.ts +++ b/server/services/trip.service.ts @@ -1,6 +1,7 @@ import { Prisma } from "@/app/generated/prisma/client"; +import type { ActivityCategory } from "@/app/generated/prisma/enums"; import { prisma } from "@/lib/prisma"; -import { tripRepo } from "@/server/repositories/trip.repo"; +import { tripRepo, type TripFilters } from "@/server/repositories/trip.repo"; import { participantRepo } from "@/server/repositories/participant.repo"; import { LIMITS } from "@/lib/limits"; import { utcStartOfDay, isTripDepartureDayPast } from "@/lib/trip-dates"; @@ -17,9 +18,10 @@ function isSerializationConflict(err: unknown): boolean { } interface CreateTripInput { + category: ActivityCategory; title: string; description?: string; - mountain: string; + destination: string; location: string; meetingPoint?: string; itinerary?: string; @@ -34,7 +36,7 @@ interface CreateTripInput { } export const tripService = { - async getOpenTrips(filters?: { q?: string; from?: string; to?: string }) { + async getOpenTrips(filters?: TripFilters) { return tripRepo.findOpen(filters); }, @@ -67,9 +69,10 @@ export const tripService = { : undefined; const tripData = { + category: input.category, title: input.title, description: input.description, - mountain: input.mountain, + destination: input.destination, location: input.location, meetingPoint: input.meetingPoint, itinerary: input.itinerary,