diff --git a/AGENTS.md b/AGENTS.md index 42b80ca..4ce11a6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -45,7 +45,7 @@ npm run test:smoke ## Docker lifecycle -Start local services with `npm run docker:up` and stop them with `npm run docker:down`. This retains named volumes. The smoke test uses a separate Compose project and removes its volumes automatically. Run `docker compose down --volumes` only when intentionally resetting local PostgreSQL and AIStor data. Start the profile-gated application container with `docker compose --profile app up --build`. +Start local services with `npm run docker:up`, apply migrations with `npm run prisma:deploy`, and optionally add local sample records with `npm run db:seed:examples`. Stop services with `npm run docker:down`; this retains named volumes. The example seed is limited to local database hosts. The smoke test uses a separate Compose project and removes its volumes automatically. Run `docker compose down --volumes` only when intentionally resetting local PostgreSQL and AIStor data. Start the profile-gated application container with `docker compose --profile app up --build`. ## Change checklist diff --git a/README.md b/README.md index 5dbab8f..9bc2e02 100644 --- a/README.md +++ b/README.md @@ -39,14 +39,22 @@ This repository contains the development foundation and initial App Router shell npm run docker:up ``` -5. Run the available local checks. +5. Apply the local database migrations and, if desired, insert three repeatable + example bounties with local SVG pictures. + + ```sh + npm run prisma:deploy + npm run db:seed:examples + ``` + +6. Run the available local checks. ```sh npm run verify npm run test:smoke ``` -6. Stop services when finished. `docker:down` preserves local volumes; use `docker compose down --volumes` only when you intentionally want to discard local database and object-storage data. +7. Stop services when finished. `docker:down` preserves local volumes; use `docker compose down --volumes` only when you intentionally want to discard local database and object-storage data. ```sh npm run docker:down @@ -62,13 +70,15 @@ To install dependencies, start local services, and launch the development server ## Database migrations -Prisma is configured for PostgreSQL and reads `DATABASE_URL` from `.env`. The initial account migration creates the `User` table with a unique email address and password hash. Once a model is approved, create and review a development migration with: +Prisma is configured for PostgreSQL and reads `DATABASE_URL` from `.env`. The migrations create the account and bounty tables, including an optional picture reference on each bounty. Create and review a development migration with: ```sh npm run prisma:migrate -- --name describe_the_change ``` -Use `npm run prisma:deploy` only in a controlled deployment workflow against an approved target—never against production from a workstation. +Use `npm run prisma:deploy` to apply reviewed migrations to the local development database. For a remote deployment, run it only in a controlled workflow against the approved target—never against production from a workstation. + +`npm run db:seed:examples` inserts or refreshes three local example bounties and a demo poster. It refuses database hosts other than localhost or the local Compose service, and can be rerun without duplicating the examples. ## CI and GitHub configuration diff --git a/app/posts/PostsList.tsx b/app/posts/PostsList.tsx index b58d0a1..5c4ef59 100644 --- a/app/posts/PostsList.tsx +++ b/app/posts/PostsList.tsx @@ -1,20 +1,17 @@ -import styles from './posts.module.css' +import Image from 'next/image' -export type PostPreview = { - id: string - title: string - location: string -} +import type { PostCardData } from './post-data' +import styles from './posts.module.css' type PostsListProps = { - posts: PostPreview[] + posts: PostCardData[] } export function PostsList({ posts }: PostsListProps) { if (posts.length === 0) { return (

- No posts + No tasks are available right now.

) } @@ -23,13 +20,39 @@ export function PostsList({ posts }: PostsListProps) { diff --git a/app/posts/page.tsx b/app/posts/page.tsx index 713a0e3..8d7a6d6 100644 --- a/app/posts/page.tsx +++ b/app/posts/page.tsx @@ -1,8 +1,10 @@ import { PostsList } from './PostsList' -import { samplePosts } from './post-data' +import { getPublicPostCards } from './post-data' import styles from './posts.module.css' -export default function PostsPage() { +export default async function PostsPage() { + const posts = await getPublicPostCards() + return (
@@ -18,7 +20,7 @@ export default function PostsPage() {
- +
diff --git a/app/posts/post-data.ts b/app/posts/post-data.ts index af3af3d..2136982 100644 --- a/app/posts/post-data.ts +++ b/app/posts/post-data.ts @@ -1,24 +1,91 @@ -import type { PostPreview } from './PostsList' +export type PostListingRecord = { + id: string + title: string + location: string + imageUrl: string | null + maximumVolunteers: number + currentVolunteers: number +} -export const samplePosts: PostPreview[] = [ - { - id: 'cedar-grove-cleanup', - title: 'Clean up Cedar Grove', - location: 'Chico, CA', - }, - { - id: 'food-pantry-sorting', - title: 'Sort food pantry donations', - location: 'Downtown Chico, CA', - }, - { - id: 'community-garden', - title: 'Water the community garden', - location: 'South Chico, CA', - }, - { - id: 'trailhead-tidy', - title: 'Tidy the trailhead', - location: 'Upper Park, Chico, CA', +export type PostCardData = Pick< + PostListingRecord, + 'id' | 'title' | 'location' | 'imageUrl' +> + +export interface PostListingSource { + listPublicPosts(): Promise +} + +const databaseSource: PostListingSource = { + async listPublicPosts() { + const { prisma } = await import('../../lib/prisma') + const bounties = await prisma.bounty.findMany({ + where: { + status: 'OPEN', + deadline: { gt: new Date() }, + }, + orderBy: { createdAt: 'desc' }, + select: { + id: true, + title: true, + locationLabel: true, + imageUrl: true, + maxVolunteers: true, + _count: { + select: { + volunteerAttendances: { + where: { status: 'JOINED' }, + }, + }, + }, + }, + }) + + return bounties.map((bounty) => ({ + id: bounty.id, + title: bounty.title, + location: bounty.locationLabel, + imageUrl: bounty.imageUrl, + maximumVolunteers: bounty.maxVolunteers, + currentVolunteers: bounty._count.volunteerAttendances, + })) }, -] +} + +/** + * Keep the database query on the server and return only fields needed by a + * public post card. + */ +export async function getPublicPostCards( + source: PostListingSource = databaseSource, +): Promise { + const records = await source.listPublicPosts() + + return records + .filter( + (record) => + Number.isInteger(record.maximumVolunteers) && + record.maximumVolunteers > 0 && + Number.isInteger(record.currentVolunteers) && + record.currentVolunteers >= 0 && + record.currentVolunteers < record.maximumVolunteers, + ) + .map(({ id, title, location, imageUrl }) => ({ + id, + title, + location, + imageUrl: getSafeImageUrl(imageUrl), + })) +} + +function getSafeImageUrl(imageUrl: string | null): string | null { + if (!imageUrl) return null + if (imageUrl.startsWith('/') && !imageUrl.startsWith('//')) return imageUrl + + try { + const parsedImageUrl = new URL(imageUrl) + return parsedImageUrl.protocol === 'https:' ? imageUrl : null + } catch { + return null + } +} diff --git a/app/posts/posts.module.css b/app/posts/posts.module.css index 920ff9d..9c95f16 100644 --- a/app/posts/posts.module.css +++ b/app/posts/posts.module.css @@ -44,35 +44,56 @@ } .listViewport { - height: clamp(19rem, 58dvh, 30rem); - overflow-y: auto; border-top: 1px solid var(--ink); - border-bottom: 1px solid var(--ink); - scrollbar-color: var(--accent) var(--canvas); } .postsList { display: grid; - gap: 0.75rem; + grid-template-columns: minmax(0, 1fr); + gap: 1rem; margin: 0; - padding: 0.75rem 0; + padding: 1rem 0 0; list-style: none; } .postCard { - display: flex; - align-items: end; - justify-content: space-between; - gap: 1rem; - min-height: 7.5rem; - padding: 1rem; + min-width: 0; border: 1px solid var(--ink); background: #fffefa; } +.postContent { + display: grid; + grid-template-rows: auto 1fr auto; + height: 100%; +} + +.postImage { + position: relative; + aspect-ratio: 16 / 9; + overflow: hidden; + background: var(--accent-soft); +} + +.postImageAsset { + object-fit: cover; +} + +.postImageFallback { + display: grid; + place-items: center; + color: var(--muted); + font-family: Georgia, 'Times New Roman', serif; + font-size: 1.25rem; +} + +.postInfo { + padding: 1rem 1rem 0.75rem; +} + .postCard h2 { margin: 0; - font-size: clamp(1.25rem, 4vw, 1.75rem); + font-size: clamp(1.25rem, 3vw, 1.75rem); } .postCard p { @@ -80,16 +101,25 @@ color: var(--muted); } -.postCard button { - flex: 0 0 auto; +.detailsButton { + justify-self: start; + min-height: 2.75rem; + margin: 0 1rem 1rem; padding: 0.5rem 0.75rem; - white-space: nowrap; + border: 1px solid var(--ink); + border-radius: 0; + color: var(--ink); + background: var(--canvas); + font: inherit; + font-weight: 700; + cursor: not-allowed; + opacity: 0.75; } .emptyState { display: grid; - height: 100%; - margin: 0; + min-height: 12rem; + margin: 1rem 0 0; place-items: center; color: var(--muted); } @@ -102,4 +132,9 @@ .postsBoard { padding: 1.5rem; } + + .postsList { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1.25rem; + } } diff --git a/docs/decisions/ADR-002-capacity-based-volunteer-attendance.md b/docs/decisions/ADR-002-capacity-based-volunteer-attendance.md new file mode 100644 index 0000000..d71a8a1 --- /dev/null +++ b/docs/decisions/ADR-002-capacity-based-volunteer-attendance.md @@ -0,0 +1,59 @@ +# ADR-002: Model bounty attendance as capacity-based volunteer records + +## Status + +Accepted + +## Date + +2026-10-14 + +## Context + +Sidecause originally modeled a bounty as a single-member claim. The posts +experience now requires a scheduled task with a minimum and maximum number of +volunteers, a list of attendees, and required or recommended skills and +equipment. The poster's contact information must be available to volunteers +who have joined the post, but never to visitors or other signed-in members. + +## Decision + +Store attendance in a relation between a bounty and a user, rather than a +single claimant field or a list encoded in the bounty record. Enforce a unique +member-and-bounty attendance record and guard joins transactionally against +`maxVolunteers`. + +Each bounty stores one scheduled timestamp and retains its separate joining +deadline. It has a positive `maxVolunteers` value and a non-negative +`payPerVolunteer` amount. Skills and equipment are separate child +relations, with each requirement marked `REQUIRED` or `RECOMMENDED`. + +A bounty is `OPEN` while a place remains and `FULL` when its maximum attendance +is reached. A joined volunteer can withdraw; this returns a full bounty to +open and revokes contact access. Only the poster can complete the task. The +poster’s display name and account email are projected only to authenticated +volunteers with active attendance on that bounty. + +## Alternatives considered + +### Keep one claimant and add a capacity field + +This would leave no relational record for the other attendees and could not +reliably enforce or query per-user attendance. + +### Store attendee identifiers in an array on the bounty + +This weakens relational integrity, makes member deletion and joins harder to +reason about, and complicates the unique-attendance constraint. + +### Make poster contact public + +Public email disclosure conflicts with the privacy boundary in the product +contract and exposes posters to unsolicited contact. + +## Consequences + +- The Bounty schema and lifecycle API contract require a reviewed migration. +- Join and withdrawal operations require transactional capacity handling. +- Public, member, and attendee response projections must be tested separately. +- The new `FULL` state is public; cancelled and expired bounties remain hidden. diff --git a/docs/implementation-plan.md b/docs/implementation-plan.md index 6dca023..af46e67 100644 --- a/docs/implementation-plan.md +++ b/docs/implementation-plan.md @@ -4,8 +4,8 @@ Implement Sidecause in small, testable vertical slices. The product contract in [`product-spec.md`](product-spec.md) is the source of truth. Each schema and -API task must preserve the documented public/hidden status boundary and the -single-volunteer claim invariant. +API task must preserve the documented public/hidden status boundary, capacity +limit, per-volunteer pay, and attendee-contact privacy boundary. ## Architecture decisions @@ -13,7 +13,8 @@ single-volunteer claim invariant. - Use Auth.js with email-and-password credentials and Prisma/PostgreSQL-backed user records. Passwords are stored only as secure hashes. - Expose REST-style route handlers with a single structured error shape. -- Use transactions or an equivalent guarded conditional update for claims. +- Use transactions or an equivalent guarded conditional update for joins so + concurrent requests cannot exceed a bounty's maximum volunteer capacity. ## Task list @@ -58,14 +59,17 @@ Prisma migration. ### Phase 2: Publish and browse bounties -#### Task 3: Define and migrate the bounty domain +#### Task 3: Define and migrate the scheduled, capacity-based bounty domain **Acceptance criteria:** -- [ ] The schema represents locations, deadlines, lifecycle status, poster, - optional claimant, completion, verification, and cancellation reason. -- [ ] The schema makes a single claimant unambiguous and supports future - additive volunteer capacity. +- [ ] The schema represents locations, scheduled date/time, joining deadline, + maximum capacity, per-volunteer pay, lifecycle status, poster, completion, verification, and + cancellation reason. +- [ ] A volunteer-attendance relation makes one attendance record per member + and bounty unambiguous, and supports an attendee list. +- [ ] Requirement relations store distinct skills and equipment with a + `REQUIRED` or `RECOMMENDED` designation. - [ ] A migration is reviewed and applies to local PostgreSQL. **Verify:** `npm run prisma:validate`; run the reviewed development migration; @@ -76,15 +80,19 @@ integration tests for persistence constraints. **Likely files:** `prisma/schema.prisma`, `prisma/migrations/*`, domain types, integration tests. -#### Task 4: Create and list public bounties +#### Task 4: Create and list public scheduled bounties **Acceptance criteria:** -- [ ] An authenticated member can create a valid open bounty. -- [ ] Visitors can browse a paginated list of `OPEN`, `CLAIMED`, and +- [ ] An authenticated member can create a valid open bounty with a schedule, + maximum capacity, per-volunteer pay, and skill/equipment requirements. +- [ ] Visitors can browse a paginated list of `OPEN`, `FULL`, and `FINISHED` bounties. - [ ] Cancelled and expired bounties never appear in public list or detail responses. +- [ ] Public responses never include the poster's email; it is included only + for authenticated volunteers with active attendance on that bounty. + Withdrawal immediately revokes access. **Verify:** Unit tests for input schemas and expiry calculation; integration tests for API contracts; browser test for browse and create flows. @@ -100,34 +108,39 @@ pages and components, unit/integration/e2e tests. - [ ] Validation and authorization errors use the specified shape. - [ ] `npm run verify` and relevant integration/browser tests pass. -### Phase 3: Claim and completion lifecycle +### Phase 3: Volunteer attendance and completion lifecycle -#### Task 5: Claim and withdraw safely +#### Task 5: Join and withdraw safely **Acceptance criteria:** -- [ ] Exactly one member can claim an open, unexpired bounty. -- [ ] A second or late claim returns `409` and does not modify ownership. -- [ ] The claimant can withdraw, returning the bounty to `OPEN`. +- [ ] A member can immediately join an open, unexpired bounty while capacity + remains. +- [ ] A duplicate, late, or over-capacity join returns `409` and does not + exceed `maxVolunteers`. +- [ ] A joined volunteer can withdraw; withdrawing from a full bounty returns + it to `OPEN` and revokes access to the poster's contact information. -**Verify:** Concurrent integration test for claim attempts; browser test for -claim and withdrawal. +**Verify:** Concurrent integration test for last-slot join attempts; browser +test for join and withdrawal. **Dependencies:** Task 4. -**Likely files:** claim service, claim route handlers, bounty detail UI, tests. +**Likely files:** attendance service, volunteer route handlers, bounty detail +UI, tests. #### Task 6: Finish, verify, and cancel **Acceptance criteria:** -- [ ] Only the claimant can finish a claimed bounty, without proof submission. +- [ ] Only the poster can finish an open or full bounty, without proof + submission. - [ ] Only the poster can optionally verify a finished bounty. -- [ ] Only the poster can cancel an open or claimed bounty with an optional +- [ ] Only the poster can cancel an open or full bounty with an optional reason. **Verify:** Authorization and transition integration tests; browser test for -the full poster/claimant workflow. +the full poster/volunteer workflow. **Dependencies:** Task 5. @@ -144,12 +157,13 @@ the full poster/claimant workflow. ## Risks and mitigations -| Risk | Impact | Mitigation | -| ------------------------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------- | -| Two members claim simultaneously | High | Use a transaction/conditional status update and test concurrent requests. | -| Unverified email plus no recovery | High user-support cost | Make the limitation explicit in registration UI; revisit verification/recovery before public launch. | -| Inappropriate or unsafe public posts | High | Moderation is intentionally deferred; do not launch broadly until a reporting/moderation decision is made. | -| Deadlines depend on client clocks | Medium | Compare deadlines on the server and use one UTC timestamp representation. | +| Risk | Impact | Mitigation | +| ------------------------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| Concurrent joins exceed capacity | High | Use a transaction/conditional status update and test simultaneous last-slot joins. | +| Poster contact information leaks | High | Project public, poster, active-attendee, and withdrawn-attendee response shapes separately; test each access boundary. | +| Unverified email plus no recovery | High user-support cost | Make the limitation explicit in registration UI; revisit verification/recovery before public launch. | +| Inappropriate or unsafe public posts | High | Moderation is intentionally deferred; do not launch broadly until a reporting/moderation decision is made. | +| Deadlines depend on client clocks | Medium | Compare deadlines on the server and use one UTC timestamp representation. | ## Approval gates diff --git a/docs/post-listing-data-contract.md b/docs/post-listing-data-contract.md new file mode 100644 index 0000000..440da99 --- /dev/null +++ b/docs/post-listing-data-contract.md @@ -0,0 +1,50 @@ +# Post Listing Data Contract + +The Posts page reads through a server-side `PostListingSource` in +[`app/posts/post-data.ts`](../app/posts/post-data.ts). Its default source queries +the Prisma `Bounty` table and returns open bounties whose signup deadline has +not passed and whose capacity is not full. The page remains independent of +Prisma and receives only card-safe fields. + +## Listing fields + +`listPublicPosts()` returns records with: + +| Field | Type | Purpose | +| ------------------- | -------------------- | ----------------------------------------- | +| `id` | string | Stable post identifier | +| `title` | string | Card title | +| `location` | string | Human-readable task location | +| `imageUrl` | string or `null` | Same-origin path or HTTPS URL | +| `maximumVolunteers` | positive integer | Capacity; used on the future details page | +| `currentVolunteers` | non-negative integer | Number of active signups | + +The database query counts only `JOINED` volunteer attendances and omits a +record when that count reaches `maxVolunteers`. The public card data contains +only `id`, `title`, `location`, and `imageUrl`. A missing or invalid picture +reference uses the neutral image fallback. +Uploader contact details, signup identities, and other private fields must not +be returned from the listing source or exposed to the Posts page. + +Picture files should be stored in object storage, with the database holding a +storage key or URL. The adapter should resolve storage keys to an HTTPS URL +before returning listing records. The current server boundary accepts only +same-origin paths or HTTPS URLs and falls back to a neutral image block for +missing or invalid values. + +## Future details page fields + +The collaborator's schema should also support the later details page with: + +- Event date and time. +- Description summary. +- Pay per volunteer. +- Required skills and equipment. +- Maximum volunteer capacity. +- Volunteer signups and their public display names. +- Uploader public display name and private contact information. + +Signing up is immediate. A volunteer who has signed up may see the uploader's +contact information; visitors and members who have not signed up may not. Keep +that authorization check in the server-side details read path when it is built. +The Posts listing itself has no signup action or details navigation yet. diff --git a/docs/product-spec.md b/docs/product-spec.md index ebc658b..ea9ebc4 100644 --- a/docs/product-spec.md +++ b/docs/product-spec.md @@ -3,20 +3,21 @@ ## Objective Sidecause is a public community-service bounty board. Anyone can browse active -or completed opportunities. Signed-in members can post an opportunity, claim +or completed opportunities. Signed-in members can post an opportunity, join one, and manage the resulting volunteer work. -The first release is deliberately small: a bounty is a single-volunteer, -unpaid opportunity. It must make it easy to discover a project, commit to it, -and show that it was finished. +The first release is deliberately small: a bounty is an unpaid, scheduled +opportunity for a bounded group of volunteers. It must make it easy to +discover a project, join it while places remain, and show that it was +finished. ## Users and access -| User | Can do | -| ---------------- | ---------------------------------------------------------------------------------------- | -| Visitor | Browse `OPEN`, `CLAIMED`, and `FINISHED` bounties. | -| Signed-in member | All visitor actions plus create, claim, withdraw from, and finish bounties. | -| Bounty poster | All member actions plus cancel and optionally verify completion of bounties they posted. | +| User | Can do | +| ---------------- | ----------------------------------------------------------------------------- | +| Visitor | Browse `OPEN`, `FULL`, and `FINISHED` bounties. | +| Signed-in member | All visitor actions plus create, join, and withdraw from bounties. | +| Bounty poster | All member actions plus finish, cancel, and optionally verify their bounties. | Authentication uses an email address, password, and public display name. Email verification, password recovery, social sign-in, and moderation are out of @@ -26,25 +27,32 @@ v1. ## Bounty lifecycle ```text -OPEN --claim--> CLAIMED --finish--> FINISHED - ^ | - |---withdraw------| +OPEN --join until full--> FULL + ^ | + |-------withdraw--------| -OPEN or CLAIMED --cancel--> CANCELLED -OPEN --deadline passes--> EXPIRED +OPEN or FULL --poster finishes--> FINISHED + +OPEN or FULL --cancel--> CANCELLED +OPEN or FULL --deadline passes--> EXPIRED ``` -- Only one member may claim an `OPEN` bounty. -- Finishing is immediate and requires no note, photograph, or poster approval. +- A member may join an `OPEN` bounty immediately while its attendance count is + below `maxVolunteers`; the join changes it to `FULL` when the count reaches + that limit. +- A joined member may withdraw. Withdrawing from a `FULL` bounty returns it to + `OPEN`. +- Only the poster may finish a bounty. Finishing requires no note, photograph, + or attendee approval. - A poster may optionally verify a finished bounty. Verification is separate from its status and never blocks finishing. -- A poster may cancel an `OPEN` or `CLAIMED` bounty, optionally supplying a +- A poster may cancel an `OPEN` or `FULL` bounty, optionally supplying a cancellation reason. - Published bounties cannot otherwise be edited. -- Public listings and public detail pages expose only `OPEN`, `CLAIMED`, and +- Public listings and public detail pages expose only `OPEN`, `FULL`, and `FINISHED` bounties. `CANCELLED` and `EXPIRED` bounties are not public. - Expiry is determined server-side from the deadline. An expired bounty cannot - be claimed. + be joined. ## Bounty data @@ -53,14 +61,26 @@ Each bounty has: - A required title and description. - A required human-readable location label, such as a neighbourhood or a specific address. +- An optional picture reference. Store the image file in object storage and + keep its storage key or URL on the bounty. - Optional precise latitude and longitude, supplied together when the location is specific enough for a map point. -- A required deadline. A bounty expires after it. -- The poster, optional claimant, status, creation time, finish time, optional - verification time, and optional cancellation reason. - -Display names are public where a poster or claimant is shown. Email addresses, -password hashes, and authentication/session data are never public. +- A required scheduled date and time, plus a required deadline for joining. A + bounty expires after its deadline; its scheduled time is task information, + not an automatic lifecycle transition. +- A required positive maximum volunteer count. +- A non-negative monetary amount paid per volunteer, stored with two decimal + places. +- Zero or more named skill requirements and equipment requirements, each + marked `REQUIRED` or `RECOMMENDED`. +- The poster, zero or more attending volunteers, status, creation time, finish + time, optional verification time, and optional cancellation reason. + +Display names are public where a poster or attendee is shown. The poster's +display name and account email are available only to authenticated volunteers +with active attendance on that bounty; withdrawing immediately revokes access. +Email addresses, password hashes, and +authentication/session data are never included in public responses. ## Application boundary and API contract @@ -82,23 +102,24 @@ All API errors use this response shape: Validation failures return `422`; unauthenticated requests `401`; unauthorized requests `403`; missing or non-public resources `404`; and lifecycle conflicts -(such as a second simultaneous claim) `409`. Internal errors never reveal +(such as simultaneous attempts to take the final place) `409`. Internal errors never reveal implementation details. -| Operation | Contract | -| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `GET /api/bounties` | Public, paginated list of public statuses. Supports `page`, `pageSize`, `status`, and location filtering defined during implementation. Returns `{ data, pagination }`. | -| `POST /api/bounties` | Authenticated creation. Accepts title, description, location, optional coordinates, and deadline. Returns the created bounty with `201`. | -| `GET /api/bounties/:id` | Public only for a public-status bounty; otherwise returns `404`. | -| `POST /api/bounties/:id/claims` | Authenticated. Atomically claims an open, unexpired bounty for the current user. | -| `DELETE /api/bounties/:id/claims/me` | Claimant only. Releases the claim and returns the bounty to `OPEN`. | -| `POST /api/bounties/:id/completion` | Claimant only. Marks the bounty `FINISHED`. | -| `POST /api/bounties/:id/verification` | Poster only. Marks a finished bounty verified. | -| `POST /api/bounties/:id/cancellation` | Poster only. Cancels an open or claimed bounty; body may include `reason`. | +| Operation | Contract | +| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `GET /api/bounties` | Public, paginated list of public statuses. Supports `page`, `pageSize`, `status`, and location filtering defined during implementation. Returns `{ data, pagination }`. | +| `POST /api/bounties` | Authenticated creation. Accepts title, description, location, optional coordinates, schedule and deadline, maximum capacity, per-volunteer pay, and requirements. Returns the created bounty with `201`. | +| `GET /api/bounties/:id` | Public only for a public-status bounty; otherwise returns `404`. Public responses never contain poster contact information. | +| `GET /api/bounties/:id/poster-contact` | Authenticated active attendee only. Returns the poster's permitted contact information. | +| `POST /api/bounties/:id/volunteers` | Authenticated. Atomically joins an open, unexpired bounty when capacity remains. | +| `DELETE /api/bounties/:id/volunteers/me` | Joined volunteer only. Withdraws and returns a full bounty to `OPEN`. | +| `POST /api/bounties/:id/completion` | Poster only. Marks the bounty `FINISHED`. | +| `POST /api/bounties/:id/verification` | Poster only. Marks a finished bounty verified. | +| `POST /api/bounties/:id/cancellation` | Poster only. Cancels an open or full bounty; body may include `reason`. | Inputs are validated at route-handler boundaries. Internal services receive -trusted, typed inputs. State-changing operations must be transactional so two -users cannot both claim the same bounty. +trusted, typed inputs. State-changing operations must be transactional so +concurrent joins cannot exceed `maxVolunteers`. ## Commands @@ -138,19 +159,18 @@ docs/ Product specification, decisions, and implementation plans ## Success criteria - A visitor can view a paginated public list and public detail pages for open, - claimed, and finished bounties. -- A member can register, sign in, create a bounty, and claim one open bounty. -- A claimant can withdraw or finish their own claim; concurrent claims do not - assign two volunteers. -- A poster can cancel their own open or claimed bounty and optionally verify a - finished one. + full, and finished bounties. +- A member can register, sign in, create a bounty, and join one open bounty + while capacity remains. +- A joined volunteer can withdraw; concurrent joins never exceed a bounty's + maximum volunteer count. +- A poster can finish or cancel their own open or full bounty and optionally + verify a finished one. - All invalid or unauthorized requests follow the documented error contract. ## Explicitly deferred - Payments and experience-point rewards. -- Multiple volunteers per bounty. A future additive `volunteerCapacity` field - may extend the one-volunteer model. - Bounty editing, proof uploads, comments, reporting, and moderation. - Email verification, password recovery, social sign-in, and organization accounts. diff --git a/generated/prisma/browser.ts b/generated/prisma/browser.ts new file mode 100644 index 0000000..2cfde9b --- /dev/null +++ b/generated/prisma/browser.ts @@ -0,0 +1,44 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file should be your main import to use Prisma-related types and utilities in a browser. + * Use it to get access to models, enums, and input types. + * + * This file does not contain a `PrismaClient` class, nor several other helpers that are intended as server-side only. + * See `client.ts` for the standard, server-side entry point. + * + * 🟢 You can import this file directly. + */ + +import * as Prisma from './internal/prismaNamespaceBrowser' +export { Prisma } +export * as $Enums from './enums' +export * from './enums'; +/** + * Model User + * + */ +export type User = Prisma.UserModel +/** + * Model Bounty + * + */ +export type Bounty = Prisma.BountyModel +/** + * Model BountyVolunteer + * + */ +export type BountyVolunteer = Prisma.BountyVolunteerModel +/** + * Model BountySkillRequirement + * + */ +export type BountySkillRequirement = Prisma.BountySkillRequirementModel +/** + * Model BountyEquipmentRequirement + * + */ +export type BountyEquipmentRequirement = Prisma.BountyEquipmentRequirementModel diff --git a/generated/prisma/client.ts b/generated/prisma/client.ts new file mode 100644 index 0000000..41d5b1a --- /dev/null +++ b/generated/prisma/client.ts @@ -0,0 +1,68 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file should be your main import to use Prisma. Through it you get access to all the models, enums, and input types. + * If you're looking for something you can import in the client-side of your application, please refer to the `browser.ts` file instead. + * + * 🟢 You can import this file directly. + */ + +import * as process from 'node:process' +import * as path from 'node:path' +import { fileURLToPath } from 'node:url' +globalThis['__dirname'] = path.dirname(fileURLToPath(import.meta.url)) + +import * as runtime from "@prisma/client/runtime/client" +import * as $Enums from "./enums" +import * as $Class from "./internal/class" +import * as Prisma from "./internal/prismaNamespace" + +export * as $Enums from './enums' +export * from "./enums" +/** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient({ + * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL }) + * }) + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ +export const PrismaClient = $Class.getPrismaClientClass() +export type PrismaClient = $Class.PrismaClient +export { Prisma } + +/** + * Model User + * + */ +export type User = Prisma.UserModel +/** + * Model Bounty + * + */ +export type Bounty = Prisma.BountyModel +/** + * Model BountyVolunteer + * + */ +export type BountyVolunteer = Prisma.BountyVolunteerModel +/** + * Model BountySkillRequirement + * + */ +export type BountySkillRequirement = Prisma.BountySkillRequirementModel +/** + * Model BountyEquipmentRequirement + * + */ +export type BountyEquipmentRequirement = Prisma.BountyEquipmentRequirementModel diff --git a/generated/prisma/commonInputTypes.ts b/generated/prisma/commonInputTypes.ts new file mode 100644 index 0000000..6092e78 --- /dev/null +++ b/generated/prisma/commonInputTypes.ts @@ -0,0 +1,536 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports various common sort, input & filter types that are not directly linked to a particular model. + * + * 🟢 You can import this file directly. + */ + +import type * as runtime from "@prisma/client/runtime/client" +import * as $Enums from "./enums" +import type * as Prisma from "./internal/prismaNamespace" + + +export type StringFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringFilter<$PrismaModel> | string +} + +export type DateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string +} + +export type StringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedStringFilter<$PrismaModel> + _max?: Prisma.NestedStringFilter<$PrismaModel> +} + +export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeFilter<$PrismaModel> +} + +export type StringNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null +} + +export type DecimalNullableFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> | null + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> | null + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> | null + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalNullableFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string | null +} + +export type IntFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntFilter<$PrismaModel> | number +} + +export type DecimalFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string +} + +export type EnumBountyStatusFilter<$PrismaModel = never> = { + equals?: $Enums.BountyStatus | Prisma.EnumBountyStatusFieldRefInput<$PrismaModel> + in?: $Enums.BountyStatus[] | Prisma.ListEnumBountyStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.BountyStatus[] | Prisma.ListEnumBountyStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumBountyStatusFilter<$PrismaModel> | $Enums.BountyStatus +} + +export type DateTimeNullableFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null +} + +export type SortOrderInput = { + sort: Prisma.SortOrder + nulls?: Prisma.NullsOrder +} + +export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedStringNullableFilter<$PrismaModel> + _max?: Prisma.NestedStringNullableFilter<$PrismaModel> +} + +export type DecimalNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> | null + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> | null + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> | null + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalNullableWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _avg?: Prisma.NestedDecimalNullableFilter<$PrismaModel> + _sum?: Prisma.NestedDecimalNullableFilter<$PrismaModel> + _min?: Prisma.NestedDecimalNullableFilter<$PrismaModel> + _max?: Prisma.NestedDecimalNullableFilter<$PrismaModel> +} + +export type IntWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntWithAggregatesFilter<$PrismaModel> | number + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedFloatFilter<$PrismaModel> + _sum?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedIntFilter<$PrismaModel> + _max?: Prisma.NestedIntFilter<$PrismaModel> +} + +export type DecimalWithAggregatesFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedDecimalFilter<$PrismaModel> + _sum?: Prisma.NestedDecimalFilter<$PrismaModel> + _min?: Prisma.NestedDecimalFilter<$PrismaModel> + _max?: Prisma.NestedDecimalFilter<$PrismaModel> +} + +export type EnumBountyStatusWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.BountyStatus | Prisma.EnumBountyStatusFieldRefInput<$PrismaModel> + in?: $Enums.BountyStatus[] | Prisma.ListEnumBountyStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.BountyStatus[] | Prisma.ListEnumBountyStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumBountyStatusWithAggregatesFilter<$PrismaModel> | $Enums.BountyStatus + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumBountyStatusFilter<$PrismaModel> + _max?: Prisma.NestedEnumBountyStatusFilter<$PrismaModel> +} + +export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> +} + +export type EnumVolunteerAttendanceStatusFilter<$PrismaModel = never> = { + equals?: $Enums.VolunteerAttendanceStatus | Prisma.EnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + in?: $Enums.VolunteerAttendanceStatus[] | Prisma.ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.VolunteerAttendanceStatus[] | Prisma.ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumVolunteerAttendanceStatusFilter<$PrismaModel> | $Enums.VolunteerAttendanceStatus +} + +export type EnumVolunteerAttendanceStatusWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.VolunteerAttendanceStatus | Prisma.EnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + in?: $Enums.VolunteerAttendanceStatus[] | Prisma.ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.VolunteerAttendanceStatus[] | Prisma.ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumVolunteerAttendanceStatusWithAggregatesFilter<$PrismaModel> | $Enums.VolunteerAttendanceStatus + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumVolunteerAttendanceStatusFilter<$PrismaModel> + _max?: Prisma.NestedEnumVolunteerAttendanceStatusFilter<$PrismaModel> +} + +export type EnumRequirementLevelFilter<$PrismaModel = never> = { + equals?: $Enums.RequirementLevel | Prisma.EnumRequirementLevelFieldRefInput<$PrismaModel> + in?: $Enums.RequirementLevel[] | Prisma.ListEnumRequirementLevelFieldRefInput<$PrismaModel> + notIn?: $Enums.RequirementLevel[] | Prisma.ListEnumRequirementLevelFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRequirementLevelFilter<$PrismaModel> | $Enums.RequirementLevel +} + +export type EnumRequirementLevelWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RequirementLevel | Prisma.EnumRequirementLevelFieldRefInput<$PrismaModel> + in?: $Enums.RequirementLevel[] | Prisma.ListEnumRequirementLevelFieldRefInput<$PrismaModel> + notIn?: $Enums.RequirementLevel[] | Prisma.ListEnumRequirementLevelFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRequirementLevelWithAggregatesFilter<$PrismaModel> | $Enums.RequirementLevel + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRequirementLevelFilter<$PrismaModel> + _max?: Prisma.NestedEnumRequirementLevelFilter<$PrismaModel> +} + +export type NestedStringFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringFilter<$PrismaModel> | string +} + +export type NestedDateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string +} + +export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedStringFilter<$PrismaModel> + _max?: Prisma.NestedStringFilter<$PrismaModel> +} + +export type NestedIntFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntFilter<$PrismaModel> | number +} + +export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeFilter<$PrismaModel> +} + +export type NestedStringNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null +} + +export type NestedDecimalNullableFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> | null + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> | null + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> | null + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalNullableFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string | null +} + +export type NestedDecimalFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string +} + +export type NestedEnumBountyStatusFilter<$PrismaModel = never> = { + equals?: $Enums.BountyStatus | Prisma.EnumBountyStatusFieldRefInput<$PrismaModel> + in?: $Enums.BountyStatus[] | Prisma.ListEnumBountyStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.BountyStatus[] | Prisma.ListEnumBountyStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumBountyStatusFilter<$PrismaModel> | $Enums.BountyStatus +} + +export type NestedDateTimeNullableFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null +} + +export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedStringNullableFilter<$PrismaModel> + _max?: Prisma.NestedStringNullableFilter<$PrismaModel> +} + +export type NestedIntNullableFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null +} + +export type NestedDecimalNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> | null + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> | null + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> | null + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalNullableWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _avg?: Prisma.NestedDecimalNullableFilter<$PrismaModel> + _sum?: Prisma.NestedDecimalNullableFilter<$PrismaModel> + _min?: Prisma.NestedDecimalNullableFilter<$PrismaModel> + _max?: Prisma.NestedDecimalNullableFilter<$PrismaModel> +} + +export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntWithAggregatesFilter<$PrismaModel> | number + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedFloatFilter<$PrismaModel> + _sum?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedIntFilter<$PrismaModel> + _max?: Prisma.NestedIntFilter<$PrismaModel> +} + +export type NestedFloatFilter<$PrismaModel = never> = { + equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> + lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> + lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> + gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> + gte?: number | Prisma.FloatFieldRefInput<$PrismaModel> + not?: Prisma.NestedFloatFilter<$PrismaModel> | number +} + +export type NestedDecimalWithAggregatesFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedDecimalFilter<$PrismaModel> + _sum?: Prisma.NestedDecimalFilter<$PrismaModel> + _min?: Prisma.NestedDecimalFilter<$PrismaModel> + _max?: Prisma.NestedDecimalFilter<$PrismaModel> +} + +export type NestedEnumBountyStatusWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.BountyStatus | Prisma.EnumBountyStatusFieldRefInput<$PrismaModel> + in?: $Enums.BountyStatus[] | Prisma.ListEnumBountyStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.BountyStatus[] | Prisma.ListEnumBountyStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumBountyStatusWithAggregatesFilter<$PrismaModel> | $Enums.BountyStatus + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumBountyStatusFilter<$PrismaModel> + _max?: Prisma.NestedEnumBountyStatusFilter<$PrismaModel> +} + +export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> +} + +export type NestedEnumVolunteerAttendanceStatusFilter<$PrismaModel = never> = { + equals?: $Enums.VolunteerAttendanceStatus | Prisma.EnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + in?: $Enums.VolunteerAttendanceStatus[] | Prisma.ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.VolunteerAttendanceStatus[] | Prisma.ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumVolunteerAttendanceStatusFilter<$PrismaModel> | $Enums.VolunteerAttendanceStatus +} + +export type NestedEnumVolunteerAttendanceStatusWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.VolunteerAttendanceStatus | Prisma.EnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + in?: $Enums.VolunteerAttendanceStatus[] | Prisma.ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.VolunteerAttendanceStatus[] | Prisma.ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumVolunteerAttendanceStatusWithAggregatesFilter<$PrismaModel> | $Enums.VolunteerAttendanceStatus + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumVolunteerAttendanceStatusFilter<$PrismaModel> + _max?: Prisma.NestedEnumVolunteerAttendanceStatusFilter<$PrismaModel> +} + +export type NestedEnumRequirementLevelFilter<$PrismaModel = never> = { + equals?: $Enums.RequirementLevel | Prisma.EnumRequirementLevelFieldRefInput<$PrismaModel> + in?: $Enums.RequirementLevel[] | Prisma.ListEnumRequirementLevelFieldRefInput<$PrismaModel> + notIn?: $Enums.RequirementLevel[] | Prisma.ListEnumRequirementLevelFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRequirementLevelFilter<$PrismaModel> | $Enums.RequirementLevel +} + +export type NestedEnumRequirementLevelWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RequirementLevel | Prisma.EnumRequirementLevelFieldRefInput<$PrismaModel> + in?: $Enums.RequirementLevel[] | Prisma.ListEnumRequirementLevelFieldRefInput<$PrismaModel> + notIn?: $Enums.RequirementLevel[] | Prisma.ListEnumRequirementLevelFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRequirementLevelWithAggregatesFilter<$PrismaModel> | $Enums.RequirementLevel + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRequirementLevelFilter<$PrismaModel> + _max?: Prisma.NestedEnumRequirementLevelFilter<$PrismaModel> +} + + diff --git a/generated/prisma/enums.ts b/generated/prisma/enums.ts new file mode 100644 index 0000000..7cf1da5 --- /dev/null +++ b/generated/prisma/enums.ts @@ -0,0 +1,36 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* +* This file exports all enum related types from the schema. +* +* 🟢 You can import this file directly. +*/ + +export const BountyStatus = { + OPEN: 'OPEN', + FULL: 'FULL', + FINISHED: 'FINISHED', + CANCELLED: 'CANCELLED', + EXPIRED: 'EXPIRED' +} as const + +export type BountyStatus = (typeof BountyStatus)[keyof typeof BountyStatus] + + +export const RequirementLevel = { + REQUIRED: 'REQUIRED', + RECOMMENDED: 'RECOMMENDED' +} as const + +export type RequirementLevel = (typeof RequirementLevel)[keyof typeof RequirementLevel] + + +export const VolunteerAttendanceStatus = { + JOINED: 'JOINED', + WITHDRAWN: 'WITHDRAWN' +} as const + +export type VolunteerAttendanceStatus = (typeof VolunteerAttendanceStatus)[keyof typeof VolunteerAttendanceStatus] diff --git a/generated/prisma/internal/class.ts b/generated/prisma/internal/class.ts new file mode 100644 index 0000000..9e81662 --- /dev/null +++ b/generated/prisma/internal/class.ts @@ -0,0 +1,244 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * Please import the `PrismaClient` class from the `client.ts` file instead. + */ + +import * as runtime from "@prisma/client/runtime/client" +import type * as Prisma from "./prismaNamespace" + + +const config: runtime.GetPrismaClientConfig = { + "previewFeatures": [], + "clientVersion": "7.10.0", + "engineVersion": "0edf323efd1d98336f3f0a68684b56f689b900d3", + "activeProvider": "postgresql", + "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(cuid())\n email String @unique\n displayName String\n passwordHash String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n postedBounties Bounty[] @relation(\"BountyPoster\")\n volunteerAttendances BountyVolunteer[]\n}\n\nenum BountyStatus {\n OPEN\n FULL\n FINISHED\n CANCELLED\n EXPIRED\n}\n\nenum RequirementLevel {\n REQUIRED\n RECOMMENDED\n}\n\nenum VolunteerAttendanceStatus {\n JOINED\n WITHDRAWN\n}\n\nmodel Bounty {\n id String @id @default(cuid())\n title String\n description String\n locationLabel String\n imageUrl String?\n latitude Decimal? @db.Decimal(9, 6)\n longitude Decimal? @db.Decimal(9, 6)\n scheduledAt DateTime\n deadline DateTime\n maxVolunteers Int\n payPerVolunteer Decimal @db.Decimal(10, 2)\n status BountyStatus @default(OPEN)\n posterId String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n finishedAt DateTime?\n verifiedAt DateTime?\n cancellationReason String?\n poster User @relation(\"BountyPoster\", fields: [posterId], references: [id], onDelete: Restrict)\n volunteerAttendances BountyVolunteer[]\n skillRequirements BountySkillRequirement[]\n equipmentRequirements BountyEquipmentRequirement[]\n\n @@index([posterId])\n @@index([status, deadline])\n @@index([scheduledAt])\n}\n\nmodel BountyVolunteer {\n bountyId String\n volunteerId String\n status VolunteerAttendanceStatus @default(JOINED)\n joinedAt DateTime @default(now())\n withdrawnAt DateTime?\n bounty Bounty @relation(fields: [bountyId], references: [id], onDelete: Cascade)\n volunteer User @relation(fields: [volunteerId], references: [id], onDelete: Cascade)\n\n @@id([bountyId, volunteerId])\n @@index([volunteerId, status])\n @@index([bountyId, status])\n}\n\nmodel BountySkillRequirement {\n id String @id @default(cuid())\n bountyId String\n name String\n level RequirementLevel\n bounty Bounty @relation(fields: [bountyId], references: [id], onDelete: Cascade)\n\n @@unique([bountyId, name])\n}\n\nmodel BountyEquipmentRequirement {\n id String @id @default(cuid())\n bountyId String\n name String\n level RequirementLevel\n bounty Bounty @relation(fields: [bountyId], references: [id], onDelete: Cascade)\n\n @@unique([bountyId, name])\n}\n", + "runtimeDataModel": { + "models": {}, + "enums": {}, + "types": {} + }, + "parameterizationSchema": { + "strings": [], + "graph": "" + } +} + +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"postedBounties\",\"kind\":\"object\",\"type\":\"Bounty\",\"relationName\":\"BountyPoster\"},{\"name\":\"volunteerAttendances\",\"kind\":\"object\",\"type\":\"BountyVolunteer\",\"relationName\":\"BountyVolunteerToUser\"}],\"dbName\":null,\"schema\":null},\"Bounty\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"locationLabel\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"imageUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"scheduledAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deadline\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"maxVolunteers\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"payPerVolunteer\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"BountyStatus\"},{\"name\":\"posterId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"verifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"cancellationReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"poster\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"BountyPoster\"},{\"name\":\"volunteerAttendances\",\"kind\":\"object\",\"type\":\"BountyVolunteer\",\"relationName\":\"BountyToBountyVolunteer\"},{\"name\":\"skillRequirements\",\"kind\":\"object\",\"type\":\"BountySkillRequirement\",\"relationName\":\"BountyToBountySkillRequirement\"},{\"name\":\"equipmentRequirements\",\"kind\":\"object\",\"type\":\"BountyEquipmentRequirement\",\"relationName\":\"BountyToBountyEquipmentRequirement\"}],\"dbName\":null,\"schema\":null},\"BountyVolunteer\":{\"fields\":[{\"name\":\"bountyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"volunteerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VolunteerAttendanceStatus\"},{\"name\":\"joinedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"withdrawnAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"bounty\",\"kind\":\"object\",\"type\":\"Bounty\",\"relationName\":\"BountyToBountyVolunteer\"},{\"name\":\"volunteer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"BountyVolunteerToUser\"}],\"dbName\":null,\"schema\":null},\"BountySkillRequirement\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bountyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"level\",\"kind\":\"enum\",\"type\":\"RequirementLevel\"},{\"name\":\"bounty\",\"kind\":\"object\",\"type\":\"Bounty\",\"relationName\":\"BountyToBountySkillRequirement\"}],\"dbName\":null,\"schema\":null},\"BountyEquipmentRequirement\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bountyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"level\",\"kind\":\"enum\",\"type\":\"RequirementLevel\"},{\"name\":\"bounty\",\"kind\":\"object\",\"type\":\"Bounty\",\"relationName\":\"BountyToBountyEquipmentRequirement\"}],\"dbName\":null,\"schema\":null}},\"enums\":{},\"types\":{}}") +config.parameterizationSchema = { + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"poster\",\"bounty\",\"volunteer\",\"volunteerAttendances\",\"skillRequirements\",\"equipmentRequirements\",\"_count\",\"postedBounties\",\"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\",\"Bounty.findUnique\",\"Bounty.findUniqueOrThrow\",\"Bounty.findFirst\",\"Bounty.findFirstOrThrow\",\"Bounty.findMany\",\"Bounty.createOne\",\"Bounty.createMany\",\"Bounty.createManyAndReturn\",\"Bounty.updateOne\",\"Bounty.updateMany\",\"Bounty.updateManyAndReturn\",\"Bounty.upsertOne\",\"Bounty.deleteOne\",\"Bounty.deleteMany\",\"_avg\",\"_sum\",\"Bounty.groupBy\",\"Bounty.aggregate\",\"BountyVolunteer.findUnique\",\"BountyVolunteer.findUniqueOrThrow\",\"BountyVolunteer.findFirst\",\"BountyVolunteer.findFirstOrThrow\",\"BountyVolunteer.findMany\",\"BountyVolunteer.createOne\",\"BountyVolunteer.createMany\",\"BountyVolunteer.createManyAndReturn\",\"BountyVolunteer.updateOne\",\"BountyVolunteer.updateMany\",\"BountyVolunteer.updateManyAndReturn\",\"BountyVolunteer.upsertOne\",\"BountyVolunteer.deleteOne\",\"BountyVolunteer.deleteMany\",\"BountyVolunteer.groupBy\",\"BountyVolunteer.aggregate\",\"BountySkillRequirement.findUnique\",\"BountySkillRequirement.findUniqueOrThrow\",\"BountySkillRequirement.findFirst\",\"BountySkillRequirement.findFirstOrThrow\",\"BountySkillRequirement.findMany\",\"BountySkillRequirement.createOne\",\"BountySkillRequirement.createMany\",\"BountySkillRequirement.createManyAndReturn\",\"BountySkillRequirement.updateOne\",\"BountySkillRequirement.updateMany\",\"BountySkillRequirement.updateManyAndReturn\",\"BountySkillRequirement.upsertOne\",\"BountySkillRequirement.deleteOne\",\"BountySkillRequirement.deleteMany\",\"BountySkillRequirement.groupBy\",\"BountySkillRequirement.aggregate\",\"BountyEquipmentRequirement.findUnique\",\"BountyEquipmentRequirement.findUniqueOrThrow\",\"BountyEquipmentRequirement.findFirst\",\"BountyEquipmentRequirement.findFirstOrThrow\",\"BountyEquipmentRequirement.findMany\",\"BountyEquipmentRequirement.createOne\",\"BountyEquipmentRequirement.createMany\",\"BountyEquipmentRequirement.createManyAndReturn\",\"BountyEquipmentRequirement.updateOne\",\"BountyEquipmentRequirement.updateMany\",\"BountyEquipmentRequirement.updateManyAndReturn\",\"BountyEquipmentRequirement.upsertOne\",\"BountyEquipmentRequirement.deleteOne\",\"BountyEquipmentRequirement.deleteMany\",\"BountyEquipmentRequirement.groupBy\",\"BountyEquipmentRequirement.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"bountyId\",\"name\",\"RequirementLevel\",\"level\",\"equals\",\"in\",\"notIn\",\"not\",\"lt\",\"lte\",\"gt\",\"gte\",\"contains\",\"startsWith\",\"endsWith\",\"volunteerId\",\"VolunteerAttendanceStatus\",\"status\",\"joinedAt\",\"withdrawnAt\",\"title\",\"description\",\"locationLabel\",\"imageUrl\",\"latitude\",\"longitude\",\"scheduledAt\",\"deadline\",\"maxVolunteers\",\"payPerVolunteer\",\"BountyStatus\",\"posterId\",\"createdAt\",\"updatedAt\",\"finishedAt\",\"verifiedAt\",\"cancellationReason\",\"email\",\"displayName\",\"passwordHash\",\"every\",\"some\",\"none\",\"bountyId_name\",\"bountyId_volunteerId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "0QItUAsGAACxAQAgCgAAsAEAIGMAAK0BADBkAAAaABBlAACtAQAwZgEAAAABhwFAAK8BACGIAUAArwEAIYwBAQAAAAGNAQEArgEAIY4BAQCuAQAhAQAAAAEAIBkDAAC8AQAgBgAAsQEAIAcAAMMBACAIAADEAQAgYwAAvQEAMGQAAAMAEGUAAL0BADBmAQCuAQAheAAAwgGGASJ7AQCuAQAhfAEArgEAIX0BAK4BACF-AQC-AQAhfxAAvwEAIYABEAC_AQAhgQFAAK8BACGCAUAArwEAIYMBAgDAAQAhhAEQAMEBACGGAQEArgEAIYcBQACvAQAhiAFAAK8BACGJAUAAuwEAIYoBQAC7AQAhiwEBAL4BACEKAwAAsQIAIAYAAK8CACAHAACyAgAgCAAAswIAIH4AANEBACB_AADRAQAggAEAANEBACCJAQAA0QEAIIoBAADRAQAgiwEAANEBACAZAwAAvAEAIAYAALEBACAHAADDAQAgCAAAxAEAIGMAAL0BADBkAAADABBlAAC9AQAwZgEAAAABeAAAwgGGASJ7AQCuAQAhfAEArgEAIX0BAK4BACF-AQC-AQAhfxAAvwEAIYABEAC_AQAhgQFAAK8BACGCAUAArwEAIYMBAgDAAQAhhAEQAMEBACGGAQEArgEAIYcBQACvAQAhiAFAAK8BACGJAUAAuwEAIYoBQAC7AQAhiwEBAL4BACEDAAAAAwAgAQAABAAwAgAABQAgCgQAALUBACAFAAC8AQAgYwAAuQEAMGQAAAcAEGUAALkBADBnAQCuAQAhdgEArgEAIXgAALoBeCJ5QACvAQAhekAAuwEAIQMEAACwAgAgBQAAsQIAIHoAANEBACALBAAAtQEAIAUAALwBACBjAAC5AQAwZAAABwAQZQAAuQEAMGcBAK4BACF2AQCuAQAheAAAugF4InlAAK8BACF6QAC7AQAhkwEAALgBACADAAAABwAgAQAACAAwAgAACQAgCAQAALUBACBjAAC3AQAwZAAACwAQZQAAtwEAMGYBAK4BACFnAQCuAQAhaAEArgEAIWoAALQBaiIBBAAAsAIAIAkEAAC1AQAgYwAAtwEAMGQAAAsAEGUAALcBADBmAQAAAAFnAQCuAQAhaAEArgEAIWoAALQBaiKSAQAAtgEAIAMAAAALACABAAAMADACAAANACAIBAAAtQEAIGMAALMBADBkAAAPABBlAACzAQAwZgEArgEAIWcBAK4BACFoAQCuAQAhagAAtAFqIgEEAACwAgAgCQQAALUBACBjAACzAQAwZAAADwAQZQAAswEAMGYBAAAAAWcBAK4BACFoAQCuAQAhagAAtAFqIpIBAACyAQAgAwAAAA8AIAEAABAAMAIAABEAIAEAAAAHACABAAAACwAgAQAAAA8AIAMAAAAHACABAAAIADACAAAJACABAAAAAwAgAQAAAAcAIAEAAAABACALBgAAsQEAIAoAALABACBjAACtAQAwZAAAGgAQZQAArQEAMGYBAK4BACGHAUAArwEAIYgBQACvAQAhjAEBAK4BACGNAQEArgEAIY4BAQCuAQAhAgYAAK8CACAKAACuAgAgAwAAABoAIAEAABsAMAIAAAEAIAMAAAAaACABAAAbADACAAABACADAAAAGgAgAQAAGwAwAgAAAQAgCAYAAK0CACAKAACsAgAgZgEAAAABhwFAAAAAAYgBQAAAAAGMAQEAAAABjQEBAAAAAY4BAQAAAAEBEAAAHwAgBmYBAAAAAYcBQAAAAAGIAUAAAAABjAEBAAAAAY0BAQAAAAGOAQEAAAABARAAACEAMAEQAAAhADAIBgAAlgIAIAoAAJUCACBmAQDIAQAhhwFAANYBACGIAUAA1gEAIYwBAQDIAQAhjQEBAMgBACGOAQEAyAEAIQIAAAABACAQAAAkACAGZgEAyAEAIYcBQADWAQAhiAFAANYBACGMAQEAyAEAIY0BAQDIAQAhjgEBAMgBACECAAAAGgAgEAAAJgAgAgAAABoAIBAAACYAIAMAAAABACAXAAAfACAYAAAkACABAAAAAQAgAQAAABoAIAMJAACSAgAgHQAAlAIAIB4AAJMCACAJYwAArAEAMGQAAC0AEGUAAKwBADBmAQCJAQAhhwFAAJMBACGIAUAAkwEAIYwBAQCJAQAhjQEBAIkBACGOAQEAiQEAIQMAAAAaACABAAAsADAcAAAtACADAAAAGgAgAQAAGwAwAgAAAQAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACAWAwAAjgIAIAYAAI8CACAHAACQAgAgCAAAkQIAIGYBAAAAAXgAAACGAQJ7AQAAAAF8AQAAAAF9AQAAAAF-AQAAAAF_EAAAAAGAARAAAAABgQFAAAAAAYIBQAAAAAGDAQIAAAABhAEQAAAAAYYBAQAAAAGHAUAAAAABiAFAAAAAAYkBQAAAAAGKAUAAAAABiwEBAAAAAQEQAAA1ACASZgEAAAABeAAAAIYBAnsBAAAAAXwBAAAAAX0BAAAAAX4BAAAAAX8QAAAAAYABEAAAAAGBAUAAAAABggFAAAAAAYMBAgAAAAGEARAAAAABhgEBAAAAAYcBQAAAAAGIAUAAAAABiQFAAAAAAYoBQAAAAAGLAQEAAAABARAAADcAMAEQAAA3ADAWAwAA5gEAIAYAAOcBACAHAADoAQAgCAAA6QEAIGYBAMgBACF4AADlAYYBInsBAMgBACF8AQDIAQAhfQEAyAEAIX4BAOEBACF_EADiAQAhgAEQAOIBACGBAUAA1gEAIYIBQADWAQAhgwECAOMBACGEARAA5AEAIYYBAQDIAQAhhwFAANYBACGIAUAA1gEAIYkBQADXAQAhigFAANcBACGLAQEA4QEAIQIAAAAFACAQAAA6ACASZgEAyAEAIXgAAOUBhgEiewEAyAEAIXwBAMgBACF9AQDIAQAhfgEA4QEAIX8QAOIBACGAARAA4gEAIYEBQADWAQAhggFAANYBACGDAQIA4wEAIYQBEADkAQAhhgEBAMgBACGHAUAA1gEAIYgBQADWAQAhiQFAANcBACGKAUAA1wEAIYsBAQDhAQAhAgAAAAMAIBAAADwAIAIAAAADACAQAAA8ACADAAAABQAgFwAANQAgGAAAOgAgAQAAAAUAIAEAAAADACALCQAA3AEAIB0AAN8BACAeAADeAQAgLwAA3QEAIDAAAOABACB-AADRAQAgfwAA0QEAIIABAADRAQAgiQEAANEBACCKAQAA0QEAIIsBAADRAQAgFWMAAJwBADBkAABDABBlAACcAQAwZgEAiQEAIXgAAKEBhgEiewEAiQEAIXwBAIkBACF9AQCJAQAhfgEAnQEAIX8QAJ4BACGAARAAngEAIYEBQACTAQAhggFAAJMBACGDAQIAnwEAIYQBEACgAQAhhgEBAIkBACGHAUAAkwEAIYgBQACTAQAhiQFAAJQBACGKAUAAlAEAIYsBAQCdAQAhAwAAAAMAIAEAAEIAMBwAAEMAIAMAAAADACABAAAEADACAAAFACABAAAACQAgAQAAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAcEAADaAQAgBQAA2wEAIGcBAAAAAXYBAAAAAXgAAAB4AnlAAAAAAXpAAAAAAQEQAABLACAFZwEAAAABdgEAAAABeAAAAHgCeUAAAAABekAAAAABARAAAE0AMAEQAABNADAHBAAA2AEAIAUAANkBACBnAQDIAQAhdgEAyAEAIXgAANUBeCJ5QADWAQAhekAA1wEAIQIAAAAJACAQAABQACAFZwEAyAEAIXYBAMgBACF4AADVAXgieUAA1gEAIXpAANcBACECAAAABwAgEAAAUgAgAgAAAAcAIBAAAFIAIAMAAAAJACAXAABLACAYAABQACABAAAACQAgAQAAAAcAIAQJAADSAQAgHQAA1AEAIB4AANMBACB6AADRAQAgCGMAAJEBADBkAABZABBlAACRAQAwZwEAiQEAIXYBAIkBACF4AACSAXgieUAAkwEAIXpAAJQBACEDAAAABwAgAQAAWAAwHAAAWQAgAwAAAAcAIAEAAAgAMAIAAAkAIAEAAAANACABAAAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACADAAAACwAgAQAADAAwAgAADQAgBQQAANABACBmAQAAAAFnAQAAAAFoAQAAAAFqAAAAagIBEAAAYQAgBGYBAAAAAWcBAAAAAWgBAAAAAWoAAABqAgEQAABjADABEAAAYwAwBQQAAM8BACBmAQDIAQAhZwEAyAEAIWgBAMgBACFqAADJAWoiAgAAAA0AIBAAAGYAIARmAQDIAQAhZwEAyAEAIWgBAMgBACFqAADJAWoiAgAAAAsAIBAAAGgAIAIAAAALACAQAABoACADAAAADQAgFwAAYQAgGAAAZgAgAQAAAA0AIAEAAAALACADCQAAzAEAIB0AAM4BACAeAADNAQAgB2MAAJABADBkAABvABBlAACQAQAwZgEAiQEAIWcBAIkBACFoAQCJAQAhagAAigFqIgMAAAALACABAABuADAcAABvACADAAAACwAgAQAADAAwAgAADQAgAQAAABEAIAEAAAARACADAAAADwAgAQAAEAAwAgAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACAFBAAAywEAIGYBAAAAAWcBAAAAAWgBAAAAAWoAAABqAgEQAAB3ACAEZgEAAAABZwEAAAABaAEAAAABagAAAGoCARAAAHkAMAEQAAB5ADAFBAAAygEAIGYBAMgBACFnAQDIAQAhaAEAyAEAIWoAAMkBaiICAAAAEQAgEAAAfAAgBGYBAMgBACFnAQDIAQAhaAEAyAEAIWoAAMkBaiICAAAADwAgEAAAfgAgAgAAAA8AIBAAAH4AIAMAAAARACAXAAB3ACAYAAB8ACABAAAAEQAgAQAAAA8AIAMJAADFAQAgHQAAxwEAIB4AAMYBACAHYwAAiAEAMGQAAIUBABBlAACIAQAwZgEAiQEAIWcBAIkBACFoAQCJAQAhagAAigFqIgMAAAAPACABAACEAQAwHAAAhQEAIAMAAAAPACABAAAQADACAAARACAHYwAAiAEAMGQAAIUBABBlAACIAQAwZgEAiQEAIWcBAIkBACFoAQCJAQAhagAAigFqIg4JAACMAQAgHQAAjwEAIB4AAI8BACBrAQAAAAFsAQAAAARtAQAAAARuAQCOAQAhbwEAAAABcAEAAAABcQEAAAABcgEAAAABcwEAAAABdAEAAAABdQEAAAABBwkAAIwBACAdAACNAQAgHgAAjQEAIGsAAABqAmwAAABqCG0AAABqCG4AAIsBaiIHCQAAjAEAIB0AAI0BACAeAACNAQAgawAAAGoCbAAAAGoIbQAAAGoIbgAAiwFqIghrAgAAAAFsAgAAAARtAgAAAARuAgCMAQAhbwIAAAABcAIAAAABcQIAAAABcgIAAAABBGsAAABqAmwAAABqCG0AAABqCG4AAI0BaiIOCQAAjAEAIB0AAI8BACAeAACPAQAgawEAAAABbAEAAAAEbQEAAAAEbgEAjgEAIW8BAAAAAXABAAAAAXEBAAAAAXIBAAAAAXMBAAAAAXQBAAAAAXUBAAAAAQtrAQAAAAFsAQAAAARtAQAAAARuAQCPAQAhbwEAAAABcAEAAAABcQEAAAABcgEAAAABcwEAAAABdAEAAAABdQEAAAABB2MAAJABADBkAABvABBlAACQAQAwZgEAiQEAIWcBAIkBACFoAQCJAQAhagAAigFqIghjAACRAQAwZAAAWQAQZQAAkQEAMGcBAIkBACF2AQCJAQAheAAAkgF4InlAAJMBACF6QACUAQAhBwkAAIwBACAdAACbAQAgHgAAmwEAIGsAAAB4AmwAAAB4CG0AAAB4CG4AAJoBeCILCQAAjAEAIB0AAJkBACAeAACZAQAga0AAAAABbEAAAAAEbUAAAAAEbkAAmAEAIW9AAAAAAXBAAAAAAXFAAAAAAXJAAAAAAQsJAACWAQAgHQAAlwEAIB4AAJcBACBrQAAAAAFsQAAAAAVtQAAAAAVuQACVAQAhb0AAAAABcEAAAAABcUAAAAABckAAAAABCwkAAJYBACAdAACXAQAgHgAAlwEAIGtAAAAAAWxAAAAABW1AAAAABW5AAJUBACFvQAAAAAFwQAAAAAFxQAAAAAFyQAAAAAEIawIAAAABbAIAAAAFbQIAAAAFbgIAlgEAIW8CAAAAAXACAAAAAXECAAAAAXICAAAAAQhrQAAAAAFsQAAAAAVtQAAAAAVuQACXAQAhb0AAAAABcEAAAAABcUAAAAABckAAAAABCwkAAIwBACAdAACZAQAgHgAAmQEAIGtAAAAAAWxAAAAABG1AAAAABG5AAJgBACFvQAAAAAFwQAAAAAFxQAAAAAFyQAAAAAEIa0AAAAABbEAAAAAEbUAAAAAEbkAAmQEAIW9AAAAAAXBAAAAAAXFAAAAAAXJAAAAAAQcJAACMAQAgHQAAmwEAIB4AAJsBACBrAAAAeAJsAAAAeAhtAAAAeAhuAACaAXgiBGsAAAB4AmwAAAB4CG0AAAB4CG4AAJsBeCIVYwAAnAEAMGQAAEMAEGUAAJwBADBmAQCJAQAheAAAoQGGASJ7AQCJAQAhfAEAiQEAIX0BAIkBACF-AQCdAQAhfxAAngEAIYABEACeAQAhgQFAAJMBACGCAUAAkwEAIYMBAgCfAQAhhAEQAKABACGGAQEAiQEAIYcBQACTAQAhiAFAAJMBACGJAUAAlAEAIYoBQACUAQAhiwEBAJ0BACEOCQAAlgEAIB0AAKsBACAeAACrAQAgawEAAAABbAEAAAAFbQEAAAAFbgEAqgEAIW8BAAAAAXABAAAAAXEBAAAAAXIBAAAAAXMBAAAAAXQBAAAAAXUBAAAAAQ0JAACWAQAgHQAAqQEAIB4AAKkBACAvAACpAQAgMAAAqQEAIGsQAAAAAWwQAAAABW0QAAAABW4QAKgBACFvEAAAAAFwEAAAAAFxEAAAAAFyEAAAAAENCQAAjAEAIB0AAIwBACAeAACMAQAgLwAApwEAIDAAAIwBACBrAgAAAAFsAgAAAARtAgAAAARuAgCmAQAhbwIAAAABcAIAAAABcQIAAAABcgIAAAABDQkAAIwBACAdAAClAQAgHgAApQEAIC8AAKUBACAwAAClAQAgaxAAAAABbBAAAAAEbRAAAAAEbhAApAEAIW8QAAAAAXAQAAAAAXEQAAAAAXIQAAAAAQcJAACMAQAgHQAAowEAIB4AAKMBACBrAAAAhgECbAAAAIYBCG0AAACGAQhuAACiAYYBIgcJAACMAQAgHQAAowEAIB4AAKMBACBrAAAAhgECbAAAAIYBCG0AAACGAQhuAACiAYYBIgRrAAAAhgECbAAAAIYBCG0AAACGAQhuAACjAYYBIg0JAACMAQAgHQAApQEAIB4AAKUBACAvAAClAQAgMAAApQEAIGsQAAAAAWwQAAAABG0QAAAABG4QAKQBACFvEAAAAAFwEAAAAAFxEAAAAAFyEAAAAAEIaxAAAAABbBAAAAAEbRAAAAAEbhAApQEAIW8QAAAAAXAQAAAAAXEQAAAAAXIQAAAAAQ0JAACMAQAgHQAAjAEAIB4AAIwBACAvAACnAQAgMAAAjAEAIGsCAAAAAWwCAAAABG0CAAAABG4CAKYBACFvAgAAAAFwAgAAAAFxAgAAAAFyAgAAAAEIawgAAAABbAgAAAAEbQgAAAAEbggApwEAIW8IAAAAAXAIAAAAAXEIAAAAAXIIAAAAAQ0JAACWAQAgHQAAqQEAIB4AAKkBACAvAACpAQAgMAAAqQEAIGsQAAAAAWwQAAAABW0QAAAABW4QAKgBACFvEAAAAAFwEAAAAAFxEAAAAAFyEAAAAAEIaxAAAAABbBAAAAAFbRAAAAAFbhAAqQEAIW8QAAAAAXAQAAAAAXEQAAAAAXIQAAAAAQ4JAACWAQAgHQAAqwEAIB4AAKsBACBrAQAAAAFsAQAAAAVtAQAAAAVuAQCqAQAhbwEAAAABcAEAAAABcQEAAAABcgEAAAABcwEAAAABdAEAAAABdQEAAAABC2sBAAAAAWwBAAAABW0BAAAABW4BAKsBACFvAQAAAAFwAQAAAAFxAQAAAAFyAQAAAAFzAQAAAAF0AQAAAAF1AQAAAAEJYwAArAEAMGQAAC0AEGUAAKwBADBmAQCJAQAhhwFAAJMBACGIAUAAkwEAIYwBAQCJAQAhjQEBAIkBACGOAQEAiQEAIQsGAACxAQAgCgAAsAEAIGMAAK0BADBkAAAaABBlAACtAQAwZgEArgEAIYcBQACvAQAhiAFAAK8BACGMAQEArgEAIY0BAQCuAQAhjgEBAK4BACELawEAAAABbAEAAAAEbQEAAAAEbgEAjwEAIW8BAAAAAXABAAAAAXEBAAAAAXIBAAAAAXMBAAAAAXQBAAAAAXUBAAAAAQhrQAAAAAFsQAAAAARtQAAAAARuQACZAQAhb0AAAAABcEAAAAABcUAAAAABckAAAAABA48BAAADACCQAQAAAwAgkQEAAAMAIAOPAQAABwAgkAEAAAcAIJEBAAAHACACZwEAAAABaAEAAAABCAQAALUBACBjAACzAQAwZAAADwAQZQAAswEAMGYBAK4BACFnAQCuAQAhaAEArgEAIWoAALQBaiIEawAAAGoCbAAAAGoIbQAAAGoIbgAAjQFqIhsDAAC8AQAgBgAAsQEAIAcAAMMBACAIAADEAQAgYwAAvQEAMGQAAAMAEGUAAL0BADBmAQCuAQAheAAAwgGGASJ7AQCuAQAhfAEArgEAIX0BAK4BACF-AQC-AQAhfxAAvwEAIYABEAC_AQAhgQFAAK8BACGCAUAArwEAIYMBAgDAAQAhhAEQAMEBACGGAQEArgEAIYcBQACvAQAhiAFAAK8BACGJAUAAuwEAIYoBQAC7AQAhiwEBAL4BACGUAQAAAwAglQEAAAMAIAJnAQAAAAFoAQAAAAEIBAAAtQEAIGMAALcBADBkAAALABBlAAC3AQAwZgEArgEAIWcBAK4BACFoAQCuAQAhagAAtAFqIgJnAQAAAAF2AQAAAAEKBAAAtQEAIAUAALwBACBjAAC5AQAwZAAABwAQZQAAuQEAMGcBAK4BACF2AQCuAQAheAAAugF4InlAAK8BACF6QAC7AQAhBGsAAAB4AmwAAAB4CG0AAAB4CG4AAJsBeCIIa0AAAAABbEAAAAAFbUAAAAAFbkAAlwEAIW9AAAAAAXBAAAAAAXFAAAAAAXJAAAAAAQ0GAACxAQAgCgAAsAEAIGMAAK0BADBkAAAaABBlAACtAQAwZgEArgEAIYcBQACvAQAhiAFAAK8BACGMAQEArgEAIY0BAQCuAQAhjgEBAK4BACGUAQAAGgAglQEAABoAIBkDAAC8AQAgBgAAsQEAIAcAAMMBACAIAADEAQAgYwAAvQEAMGQAAAMAEGUAAL0BADBmAQCuAQAheAAAwgGGASJ7AQCuAQAhfAEArgEAIX0BAK4BACF-AQC-AQAhfxAAvwEAIYABEAC_AQAhgQFAAK8BACGCAUAArwEAIYMBAgDAAQAhhAEQAMEBACGGAQEArgEAIYcBQACvAQAhiAFAAK8BACGJAUAAuwEAIYoBQAC7AQAhiwEBAL4BACELawEAAAABbAEAAAAFbQEAAAAFbgEAqwEAIW8BAAAAAXABAAAAAXEBAAAAAXIBAAAAAXMBAAAAAXQBAAAAAXUBAAAAAQhrEAAAAAFsEAAAAAVtEAAAAAVuEACpAQAhbxAAAAABcBAAAAABcRAAAAABchAAAAABCGsCAAAAAWwCAAAABG0CAAAABG4CAIwBACFvAgAAAAFwAgAAAAFxAgAAAAFyAgAAAAEIaxAAAAABbBAAAAAEbRAAAAAEbhAApQEAIW8QAAAAAXAQAAAAAXEQAAAAAXIQAAAAAQRrAAAAhgECbAAAAIYBCG0AAACGAQhuAACjAYYBIgOPAQAACwAgkAEAAAsAIJEBAAALACADjwEAAA8AIJABAAAPACCRAQAADwAgAAAAAZkBAQAAAAEBmQEAAABqAgUXAADNAgAgGAAA0AIAIJYBAADOAgAglwEAAM8CACCcAQAABQAgAxcAAM0CACCWAQAAzgIAIJwBAAAFACAAAAAFFwAAyAIAIBgAAMsCACCWAQAAyQIAIJcBAADKAgAgnAEAAAUAIAMXAADIAgAglgEAAMkCACCcAQAABQAgAAAAAAGZAQAAAHgCAZkBQAAAAAEBmQFAAAAAAQUXAADAAgAgGAAAxgIAIJYBAADBAgAglwEAAMUCACCcAQAABQAgBRcAAL4CACAYAADDAgAglgEAAL8CACCXAQAAwgIAIJwBAAABACADFwAAwAIAIJYBAADBAgAgnAEAAAUAIAMXAAC-AgAglgEAAL8CACCcAQAAAQAgAAAAAAABmQEBAAAAAQWZARAAAAABnwEQAAAAAaABEAAAAAGhARAAAAABogEQAAAAAQWZAQIAAAABnwECAAAAAaABAgAAAAGhAQIAAAABogECAAAAAQWZARAAAAABnwEQAAAAAaABEAAAAAGhARAAAAABogEQAAAAAQGZAQAAAIYBAgUXAAC2AgAgGAAAvAIAIJYBAAC3AgAglwEAALsCACCcAQAAAQAgCxcAAIICADAYAACHAgAwlgEAAIMCADCXAQAAhAIAMJgBAACFAgAgmQEAAIYCADCaAQAAhgIAMJsBAACGAgAwnAEAAIYCADCdAQAAiAIAMJ4BAACJAgAwCxcAAPYBADAYAAD7AQAwlgEAAPcBADCXAQAA-AEAMJgBAAD5AQAgmQEAAPoBADCaAQAA-gEAMJsBAAD6AQAwnAEAAPoBADCdAQAA_AEAMJ4BAAD9AQAwCxcAAOoBADAYAADvAQAwlgEAAOsBADCXAQAA7AEAMJgBAADtAQAgmQEAAO4BADCaAQAA7gEAMJsBAADuAQAwnAEAAO4BADCdAQAA8AEAMJ4BAADxAQAwA2YBAAAAAWgBAAAAAWoAAABqAgIAAAARACAXAAD1AQAgAwAAABEAIBcAAPUBACAYAAD0AQAgARAAALoCADAJBAAAtQEAIGMAALMBADBkAAAPABBlAACzAQAwZgEAAAABZwEArgEAIWgBAK4BACFqAAC0AWoikgEAALIBACACAAAAEQAgEAAA9AEAIAIAAADyAQAgEAAA8wEAIAdjAADxAQAwZAAA8gEAEGUAAPEBADBmAQCuAQAhZwEArgEAIWgBAK4BACFqAAC0AWoiB2MAAPEBADBkAADyAQAQZQAA8QEAMGYBAK4BACFnAQCuAQAhaAEArgEAIWoAALQBaiIDZgEAyAEAIWgBAMgBACFqAADJAWoiA2YBAMgBACFoAQDIAQAhagAAyQFqIgNmAQAAAAFoAQAAAAFqAAAAagIDZgEAAAABaAEAAAABagAAAGoCAgAAAA0AIBcAAIECACADAAAADQAgFwAAgQIAIBgAAIACACABEAAAuQIAMAkEAAC1AQAgYwAAtwEAMGQAAAsAEGUAALcBADBmAQAAAAFnAQCuAQAhaAEArgEAIWoAALQBaiKSAQAAtgEAIAIAAAANACAQAACAAgAgAgAAAP4BACAQAAD_AQAgB2MAAP0BADBkAAD-AQAQZQAA_QEAMGYBAK4BACFnAQCuAQAhaAEArgEAIWoAALQBaiIHYwAA_QEAMGQAAP4BABBlAAD9AQAwZgEArgEAIWcBAK4BACFoAQCuAQAhagAAtAFqIgNmAQDIAQAhaAEAyAEAIWoAAMkBaiIDZgEAyAEAIWgBAMgBACFqAADJAWoiA2YBAAAAAWgBAAAAAWoAAABqAgUFAADbAQAgdgEAAAABeAAAAHgCeUAAAAABekAAAAABAgAAAAkAIBcAAI0CACADAAAACQAgFwAAjQIAIBgAAIwCACABEAAAuAIAMAsEAAC1AQAgBQAAvAEAIGMAALkBADBkAAAHABBlAAC5AQAwZwEArgEAIXYBAK4BACF4AAC6AXgieUAArwEAIXpAALsBACGTAQAAuAEAIAIAAAAJACAQAACMAgAgAgAAAIoCACAQAACLAgAgCGMAAIkCADBkAACKAgAQZQAAiQIAMGcBAK4BACF2AQCuAQAheAAAugF4InlAAK8BACF6QAC7AQAhCGMAAIkCADBkAACKAgAQZQAAiQIAMGcBAK4BACF2AQCuAQAheAAAugF4InlAAK8BACF6QAC7AQAhBHYBAMgBACF4AADVAXgieUAA1gEAIXpAANcBACEFBQAA2QEAIHYBAMgBACF4AADVAXgieUAA1gEAIXpAANcBACEFBQAA2wEAIHYBAAAAAXgAAAB4AnlAAAAAAXpAAAAAAQMXAAC2AgAglgEAALcCACCcAQAAAQAgBBcAAIICADCWAQAAgwIAMJgBAACFAgAgnAEAAIYCADAEFwAA9gEAMJYBAAD3AQAwmAEAAPkBACCcAQAA-gEAMAQXAADqAQAwlgEAAOsBADCYAQAA7QEAIJwBAADuAQAwAAAACxcAAKACADAYAAClAgAwlgEAAKECADCXAQAAogIAMJgBAACjAgAgmQEAAKQCADCaAQAApAIAMJsBAACkAgAwnAEAAKQCADCdAQAApgIAMJ4BAACnAgAwCxcAAJcCADAYAACbAgAwlgEAAJgCADCXAQAAmQIAMJgBAACaAgAgmQEAAIYCADCaAQAAhgIAMJsBAACGAgAwnAEAAIYCADCdAQAAnAIAMJ4BAACJAgAwBQQAANoBACBnAQAAAAF4AAAAeAJ5QAAAAAF6QAAAAAECAAAACQAgFwAAnwIAIAMAAAAJACAXAACfAgAgGAAAngIAIAEQAAC1AgAwAgAAAAkAIBAAAJ4CACACAAAAigIAIBAAAJ0CACAEZwEAyAEAIXgAANUBeCJ5QADWAQAhekAA1wEAIQUEAADYAQAgZwEAyAEAIXgAANUBeCJ5QADWAQAhekAA1wEAIQUEAADaAQAgZwEAAAABeAAAAHgCeUAAAAABekAAAAABFAYAAI8CACAHAACQAgAgCAAAkQIAIGYBAAAAAXgAAACGAQJ7AQAAAAF8AQAAAAF9AQAAAAF-AQAAAAF_EAAAAAGAARAAAAABgQFAAAAAAYIBQAAAAAGDAQIAAAABhAEQAAAAAYcBQAAAAAGIAUAAAAABiQFAAAAAAYoBQAAAAAGLAQEAAAABAgAAAAUAIBcAAKsCACADAAAABQAgFwAAqwIAIBgAAKoCACABEAAAtAIAMBkDAAC8AQAgBgAAsQEAIAcAAMMBACAIAADEAQAgYwAAvQEAMGQAAAMAEGUAAL0BADBmAQAAAAF4AADCAYYBInsBAK4BACF8AQCuAQAhfQEArgEAIX4BAL4BACF_EAC_AQAhgAEQAL8BACGBAUAArwEAIYIBQACvAQAhgwECAMABACGEARAAwQEAIYYBAQCuAQAhhwFAAK8BACGIAUAArwEAIYkBQAC7AQAhigFAALsBACGLAQEAvgEAIQIAAAAFACAQAACqAgAgAgAAAKgCACAQAACpAgAgFWMAAKcCADBkAACoAgAQZQAApwIAMGYBAK4BACF4AADCAYYBInsBAK4BACF8AQCuAQAhfQEArgEAIX4BAL4BACF_EAC_AQAhgAEQAL8BACGBAUAArwEAIYIBQACvAQAhgwECAMABACGEARAAwQEAIYYBAQCuAQAhhwFAAK8BACGIAUAArwEAIYkBQAC7AQAhigFAALsBACGLAQEAvgEAIRVjAACnAgAwZAAAqAIAEGUAAKcCADBmAQCuAQAheAAAwgGGASJ7AQCuAQAhfAEArgEAIX0BAK4BACF-AQC-AQAhfxAAvwEAIYABEAC_AQAhgQFAAK8BACGCAUAArwEAIYMBAgDAAQAhhAEQAMEBACGGAQEArgEAIYcBQACvAQAhiAFAAK8BACGJAUAAuwEAIYoBQAC7AQAhiwEBAL4BACERZgEAyAEAIXgAAOUBhgEiewEAyAEAIXwBAMgBACF9AQDIAQAhfgEA4QEAIX8QAOIBACGAARAA4gEAIYEBQADWAQAhggFAANYBACGDAQIA4wEAIYQBEADkAQAhhwFAANYBACGIAUAA1gEAIYkBQADXAQAhigFAANcBACGLAQEA4QEAIRQGAADnAQAgBwAA6AEAIAgAAOkBACBmAQDIAQAheAAA5QGGASJ7AQDIAQAhfAEAyAEAIX0BAMgBACF-AQDhAQAhfxAA4gEAIYABEADiAQAhgQFAANYBACGCAUAA1gEAIYMBAgDjAQAhhAEQAOQBACGHAUAA1gEAIYgBQADWAQAhiQFAANcBACGKAUAA1wEAIYsBAQDhAQAhFAYAAI8CACAHAACQAgAgCAAAkQIAIGYBAAAAAXgAAACGAQJ7AQAAAAF8AQAAAAF9AQAAAAF-AQAAAAF_EAAAAAGAARAAAAABgQFAAAAAAYIBQAAAAAGDAQIAAAABhAEQAAAAAYcBQAAAAAGIAUAAAAABiQFAAAAAAYoBQAAAAAGLAQEAAAABBBcAAKACADCWAQAAoQIAMJgBAACjAgAgnAEAAKQCADAEFwAAlwIAMJYBAACYAgAwmAEAAJoCACCcAQAAhgIAMAAACgMAALECACAGAACvAgAgBwAAsgIAIAgAALMCACB-AADRAQAgfwAA0QEAIIABAADRAQAgiQEAANEBACCKAQAA0QEAIIsBAADRAQAgAgYAAK8CACAKAACuAgAgAAARZgEAAAABeAAAAIYBAnsBAAAAAXwBAAAAAX0BAAAAAX4BAAAAAX8QAAAAAYABEAAAAAGBAUAAAAABggFAAAAAAYMBAgAAAAGEARAAAAABhwFAAAAAAYgBQAAAAAGJAUAAAAABigFAAAAAAYsBAQAAAAEEZwEAAAABeAAAAHgCeUAAAAABekAAAAABBwYAAK0CACBmAQAAAAGHAUAAAAABiAFAAAAAAYwBAQAAAAGNAQEAAAABjgEBAAAAAQIAAAABACAXAAC2AgAgBHYBAAAAAXgAAAB4AnlAAAAAAXpAAAAAAQNmAQAAAAFoAQAAAAFqAAAAagIDZgEAAAABaAEAAAABagAAAGoCAwAAABoAIBcAALYCACAYAAC9AgAgCQAAABoAIAYAAJYCACAQAAC9AgAgZgEAyAEAIYcBQADWAQAhiAFAANYBACGMAQEAyAEAIY0BAQDIAQAhjgEBAMgBACEHBgAAlgIAIGYBAMgBACGHAUAA1gEAIYgBQADWAQAhjAEBAMgBACGNAQEAyAEAIY4BAQDIAQAhBwoAAKwCACBmAQAAAAGHAUAAAAABiAFAAAAAAYwBAQAAAAGNAQEAAAABjgEBAAAAAQIAAAABACAXAAC-AgAgFQMAAI4CACAHAACQAgAgCAAAkQIAIGYBAAAAAXgAAACGAQJ7AQAAAAF8AQAAAAF9AQAAAAF-AQAAAAF_EAAAAAGAARAAAAABgQFAAAAAAYIBQAAAAAGDAQIAAAABhAEQAAAAAYYBAQAAAAGHAUAAAAABiAFAAAAAAYkBQAAAAAGKAUAAAAABiwEBAAAAAQIAAAAFACAXAADAAgAgAwAAABoAIBcAAL4CACAYAADEAgAgCQAAABoAIAoAAJUCACAQAADEAgAgZgEAyAEAIYcBQADWAQAhiAFAANYBACGMAQEAyAEAIY0BAQDIAQAhjgEBAMgBACEHCgAAlQIAIGYBAMgBACGHAUAA1gEAIYgBQADWAQAhjAEBAMgBACGNAQEAyAEAIY4BAQDIAQAhAwAAAAMAIBcAAMACACAYAADHAgAgFwAAAAMAIAMAAOYBACAHAADoAQAgCAAA6QEAIBAAAMcCACBmAQDIAQAheAAA5QGGASJ7AQDIAQAhfAEAyAEAIX0BAMgBACF-AQDhAQAhfxAA4gEAIYABEADiAQAhgQFAANYBACGCAUAA1gEAIYMBAgDjAQAhhAEQAOQBACGGAQEAyAEAIYcBQADWAQAhiAFAANYBACGJAUAA1wEAIYoBQADXAQAhiwEBAOEBACEVAwAA5gEAIAcAAOgBACAIAADpAQAgZgEAyAEAIXgAAOUBhgEiewEAyAEAIXwBAMgBACF9AQDIAQAhfgEA4QEAIX8QAOIBACGAARAA4gEAIYEBQADWAQAhggFAANYBACGDAQIA4wEAIYQBEADkAQAhhgEBAMgBACGHAUAA1gEAIYgBQADWAQAhiQFAANcBACGKAUAA1wEAIYsBAQDhAQAhFQMAAI4CACAGAACPAgAgCAAAkQIAIGYBAAAAAXgAAACGAQJ7AQAAAAF8AQAAAAF9AQAAAAF-AQAAAAF_EAAAAAGAARAAAAABgQFAAAAAAYIBQAAAAAGDAQIAAAABhAEQAAAAAYYBAQAAAAGHAUAAAAABiAFAAAAAAYkBQAAAAAGKAUAAAAABiwEBAAAAAQIAAAAFACAXAADIAgAgAwAAAAMAIBcAAMgCACAYAADMAgAgFwAAAAMAIAMAAOYBACAGAADnAQAgCAAA6QEAIBAAAMwCACBmAQDIAQAheAAA5QGGASJ7AQDIAQAhfAEAyAEAIX0BAMgBACF-AQDhAQAhfxAA4gEAIYABEADiAQAhgQFAANYBACGCAUAA1gEAIYMBAgDjAQAhhAEQAOQBACGGAQEAyAEAIYcBQADWAQAhiAFAANYBACGJAUAA1wEAIYoBQADXAQAhiwEBAOEBACEVAwAA5gEAIAYAAOcBACAIAADpAQAgZgEAyAEAIXgAAOUBhgEiewEAyAEAIXwBAMgBACF9AQDIAQAhfgEA4QEAIX8QAOIBACGAARAA4gEAIYEBQADWAQAhggFAANYBACGDAQIA4wEAIYQBEADkAQAhhgEBAMgBACGHAUAA1gEAIYgBQADWAQAhiQFAANcBACGKAUAA1wEAIYsBAQDhAQAhFQMAAI4CACAGAACPAgAgBwAAkAIAIGYBAAAAAXgAAACGAQJ7AQAAAAF8AQAAAAF9AQAAAAF-AQAAAAF_EAAAAAGAARAAAAABgQFAAAAAAYIBQAAAAAGDAQIAAAABhAEQAAAAAYYBAQAAAAGHAUAAAAABiAFAAAAAAYkBQAAAAAGKAUAAAAABiwEBAAAAAQIAAAAFACAXAADNAgAgAwAAAAMAIBcAAM0CACAYAADRAgAgFwAAAAMAIAMAAOYBACAGAADnAQAgBwAA6AEAIBAAANECACBmAQDIAQAheAAA5QGGASJ7AQDIAQAhfAEAyAEAIX0BAMgBACF-AQDhAQAhfxAA4gEAIYABEADiAQAhgQFAANYBACGCAUAA1gEAIYMBAgDjAQAhhAEQAOQBACGGAQEAyAEAIYcBQADWAQAhiAFAANYBACGJAUAA1wEAIYoBQADXAQAhiwEBAOEBACEVAwAA5gEAIAYAAOcBACAHAADoAQAgZgEAyAEAIXgAAOUBhgEiewEAyAEAIXwBAMgBACF9AQDIAQAhfgEA4QEAIX8QAOIBACGAARAA4gEAIYEBQADWAQAhggFAANYBACGDAQIA4wEAIYQBEADkAQAhhgEBAMgBACGHAUAA1gEAIYgBQADWAQAhiQFAANcBACGKAUAA1wEAIYsBAQDhAQAhAwYWAwkABwoGAgUDAAEGCgMHDgQIEgUJAAYCBAACBQABAQQAAgEEAAIDBhMABxQACBUAAgYYAAoXAAAAAAMJAAwdAA0eAA4AAAADCQAMHQANHgAOAQMAAQEDAAEFCQATHQAWHgAXLwAUMAAVAAAAAAAFCQATHQAWHgAXLwAUMAAVAgQAAgUAAQIEAAIFAAEDCQAcHQAdHgAeAAAAAwkAHB0AHR4AHgEEAAIBBAACAwkAIx0AJB4AJQAAAAMJACMdACQeACUBBAACAQQAAgMJACodACseACwAAAADCQAqHQArHgAsCwIBDBkBDRwBDh0BDx4BESABEiIIEyMJFCUBFScIFigKGSkBGioBGysIHy4LIC8PITACIjECIzICJDMCJTQCJjYCJzgIKDkQKTsCKj0IKz4RLD8CLUACLkEIMUQSMkUYM0YDNEcDNUgDNkkDN0oDOEwDOU4IOk8ZO1EDPFMIPVQaPlUDP1YDQFcIQVobQlsfQ1wERF0ERV4ERl8ER2AESGIESWQISmUgS2cETGkITWohTmsET2wEUG0IUXAiUnEmU3IFVHMFVXQFVnUFV3YFWHgFWXoIWnsnW30FXH8IXYABKF6BAQVfggEFYIMBCGGGASlihwEt" +} + +async function decodeBase64AsWasm(wasmBase64: string): Promise { + const { Buffer } = await import('node:buffer') + const wasmArray = Buffer.from(wasmBase64, 'base64') + return new WebAssembly.Module(wasmArray) +} + +config.compilerWasm = { + getRuntime: async () => await import("@prisma/client/runtime/query_compiler_fast_bg.postgresql.mjs"), + + getQueryCompilerWasmModule: async () => { + const { wasm } = await import("@prisma/client/runtime/query_compiler_fast_bg.postgresql.wasm-base64.mjs") + return await decodeBase64AsWasm(wasm) + }, + + importName: "./query_compiler_fast_bg.js" +} + + + +export type LogOptions = + 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array ? Prisma.GetEvents : never : never + +export interface PrismaClientConstructor { + /** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient({ + * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL }) + * }) + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ + + new < + Options extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions, + LogOpts extends LogOptions = LogOptions, + OmitOpts extends Prisma.PrismaClientOptions['omit'] = Options extends { omit: infer U } ? U : Prisma.PrismaClientOptions['omit'], + ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs + >(options: Prisma.PrismaClientConstructorArgs): PrismaClient +} + +/** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient({ + * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL }) + * }) + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ + +export interface PrismaClient< + in LogOpts extends Prisma.LogLevel = never, + in out OmitOpts extends Prisma.PrismaClientOptions['omit'] = Prisma.PrismaClientOptions['omit'], + in out ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs +> { + [K: symbol]: { types: Prisma.TypeMap['other'] } + + $on(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient; + + /** + * Connect with the database + */ + $connect(): runtime.Types.Utils.JsPromise; + + /** + * Disconnect from the database + */ + $disconnect(): runtime.Types.Utils.JsPromise; + +/** + * Executes a prepared raw query and returns the number of affected rows. + * @example + * ``` + * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Executes a raw query and returns the number of affected rows. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com') + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $executeRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a prepared raw query and returns the `SELECT` data. + * @example + * ``` + * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $queryRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a raw query and returns the `SELECT` data. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com') + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $queryRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + + /** + * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole. + * @example + * ``` + * const [george, bob, alice] = await prisma.$transaction([ + * prisma.user.create({ data: { name: 'George' } }), + * prisma.user.create({ data: { name: 'Bob' } }), + * prisma.user.create({ data: { name: 'Alice' } }), + * ]) + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/orm/prisma-client/queries/transactions). + */ + $transaction

[]>(arg: [...P], options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise> + + $transaction(fn: (prisma: Omit) => runtime.Types.Utils.JsPromise, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise + + $extends: runtime.Types.Extensions.ExtendsHook<"extends", Prisma.TypeMapCb, ExtArgs, runtime.Types.Utils.Call, { + extArgs: ExtArgs + }>> + + /** + * `prisma.user`: Exposes CRUD operations for the **User** model. + * Example usage: + * ```ts + * // Fetch zero or more Users + * const users = await prisma.user.findMany() + * ``` + */ + get user(): Prisma.UserDelegate; + + /** + * `prisma.bounty`: Exposes CRUD operations for the **Bounty** model. + * Example usage: + * ```ts + * // Fetch zero or more Bounties + * const bounties = await prisma.bounty.findMany() + * ``` + */ + get bounty(): Prisma.BountyDelegate; + + /** + * `prisma.bountyVolunteer`: Exposes CRUD operations for the **BountyVolunteer** model. + * Example usage: + * ```ts + * // Fetch zero or more BountyVolunteers + * const bountyVolunteers = await prisma.bountyVolunteer.findMany() + * ``` + */ + get bountyVolunteer(): Prisma.BountyVolunteerDelegate; + + /** + * `prisma.bountySkillRequirement`: Exposes CRUD operations for the **BountySkillRequirement** model. + * Example usage: + * ```ts + * // Fetch zero or more BountySkillRequirements + * const bountySkillRequirements = await prisma.bountySkillRequirement.findMany() + * ``` + */ + get bountySkillRequirement(): Prisma.BountySkillRequirementDelegate; + + /** + * `prisma.bountyEquipmentRequirement`: Exposes CRUD operations for the **BountyEquipmentRequirement** model. + * Example usage: + * ```ts + * // Fetch zero or more BountyEquipmentRequirements + * const bountyEquipmentRequirements = await prisma.bountyEquipmentRequirement.findMany() + * ``` + */ + get bountyEquipmentRequirement(): Prisma.BountyEquipmentRequirementDelegate; +} + +export function getPrismaClientClass(): PrismaClientConstructor { + return runtime.getPrismaClient(config) as unknown as PrismaClientConstructor +} diff --git a/generated/prisma/internal/prismaNamespace.ts b/generated/prisma/internal/prismaNamespace.ts new file mode 100644 index 0000000..2ef0013 --- /dev/null +++ b/generated/prisma/internal/prismaNamespace.ts @@ -0,0 +1,1259 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * All exports from this file are wrapped under a `Prisma` namespace object in the client.ts file. + * While this enables partial backward compatibility, it is not part of the stable public API. + * + * If you are looking for your Models, Enums, and Input Types, please import them from the respective + * model files in the `model` directory! + */ + +import * as runtime from "@prisma/client/runtime/client" +import type * as Prisma from "../models" +import { type PrismaClient } from "./class" + +export type * from '../models' + +export type DMMF = typeof runtime.DMMF + +export type PrismaPromise = runtime.Types.Public.PrismaPromise + +/** + * Prisma Errors + */ + +export const PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError +export type PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError + +export const PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError +export type PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError + +export const PrismaClientRustPanicError = runtime.PrismaClientRustPanicError +export type PrismaClientRustPanicError = runtime.PrismaClientRustPanicError + +export const PrismaClientInitializationError = runtime.PrismaClientInitializationError +export type PrismaClientInitializationError = runtime.PrismaClientInitializationError + +export const PrismaClientValidationError = runtime.PrismaClientValidationError +export type PrismaClientValidationError = runtime.PrismaClientValidationError + +/** + * Re-export of sql-template-tag + */ +export const sql = runtime.sqltag +export const empty = runtime.empty +export const join = runtime.join +export const raw = runtime.raw +export const Sql = runtime.Sql +export type Sql = runtime.Sql + + + +/** + * Decimal.js + */ +export const Decimal = runtime.Decimal +export type Decimal = runtime.Decimal + +export type DecimalJsLike = runtime.DecimalJsLike + +/** +* Extensions +*/ +export type Extension = runtime.Types.Extensions.UserArgs +export const getExtensionContext = runtime.Extensions.getExtensionContext +export type Args = runtime.Types.Public.Args +export type Payload = runtime.Types.Public.Payload +export type Result = runtime.Types.Public.Result +export type Exact = runtime.Types.Public.Exact + +export type PrismaVersion = { + client: string + engine: string +} + +/** + * Prisma Client JS version: 7.10.0 + * Query Engine version: 0edf323efd1d98336f3f0a68684b56f689b900d3 + */ +export const prismaVersion: PrismaVersion = { + client: "7.10.0", + engine: "0edf323efd1d98336f3f0a68684b56f689b900d3" +} + +/** + * Utility Types + */ + +export type Bytes = runtime.Bytes +export type JsonObject = runtime.JsonObject +export type JsonArray = runtime.JsonArray +export type JsonValue = runtime.JsonValue +export type InputJsonObject = runtime.InputJsonObject +export type InputJsonArray = runtime.InputJsonArray +export type InputJsonValue = runtime.InputJsonValue + + +export const NullTypes = { + DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull), + JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull), + AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull), +} +/** + * Helper for filtering JSON entries that have `null` on the database (empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const DbNull = runtime.DbNull + +/** + * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const JsonNull = runtime.JsonNull + +/** + * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const AnyNull = runtime.AnyNull + + +type SelectAndInclude = { + select: any + include: any +} + +type SelectAndOmit = { + select: any + omit: any +} + +/** + * From T, pick a set of properties whose keys are in the union K + */ +type Prisma__Pick = { + [P in K]: T[P]; +}; + +export type Enumerable = T | Array; + +/** + * Subset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection + */ +export type Subset = { + [key in keyof T]: key extends keyof U ? T[key] : never; +}; + +/** + * Resolved type of the argument passed to the `PrismaClient` constructor. + * + * When called without a narrower options type (the common case), this resolves + * to `PrismaClientOptions` directly, which produces a clear TypeScript error + * message (`not assignable to parameter of type 'PrismaClientOptions'`) when + * the argument is missing or incomplete. When the user supplies a narrower + * options type (e.g. via a literal), it falls back to `Subset` to keep + * filtering out unknown properties. + */ +export type PrismaClientConstructorArgs = + [PrismaClientOptions] extends [Options] ? PrismaClientOptions : Subset; + +/** + * SelectSubset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection. + * Additionally, it validates, if both select and include are present. If the case, it errors. + */ +export type SelectSubset = { + [key in keyof T]: key extends keyof U ? T[key] : never +} & + (T extends SelectAndInclude + ? 'Please either choose `select` or `include`.' + : T extends SelectAndOmit + ? 'Please either choose `select` or `omit`.' + : {}) + +/** + * Subset + Intersection + * @desc From `T` pick properties that exist in `U` and intersect `K` + */ +export type SubsetIntersection = { + [key in keyof T]: key extends keyof U ? T[key] : never +} & + K + +type Without = { [P in Exclude]?: never }; + +/** + * XOR is needed to have a real mutually exclusive union type + * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types + */ +export type XOR = + T extends object ? + U extends object ? + ((Without & U) | (Without & T)) & object + : U : T + + +/** + * Is T a Record? + */ +type IsObject = T extends Array +? False +: T extends Date +? False +: T extends Uint8Array +? False +: T extends BigInt +? False +: T extends object +? True +: False + + +/** + * If it's T[], return T + */ +export type UnEnumerate = T extends Array ? U : T + +/** + * From ts-toolbelt + */ + +type __Either = Omit & + { + // Merge all but K + [P in K]: Prisma__Pick // With K possibilities + }[K] + +type EitherStrict = Strict<__Either> + +type EitherLoose = ComputeRaw<__Either> + +type _Either< + O extends object, + K extends Key, + strict extends Boolean +> = { + 1: EitherStrict + 0: EitherLoose +}[strict] + +export type Either< + O extends object, + K extends Key, + strict extends Boolean = 1 +> = O extends unknown ? _Either : never + +export type Union = any + +export type PatchUndefined = { + [K in keyof O]: O[K] extends undefined ? At : O[K] +} & {} + +/** Helper Types for "Merge" **/ +export type IntersectOf = ( + U extends unknown ? (k: U) => void : never +) extends (k: infer I) => void + ? I + : never + +export type Overwrite = { + [K in keyof O]: K extends keyof O1 ? O1[K] : O[K]; +} & {}; + +type _Merge = IntersectOf; +}>>; + +type Key = string | number | symbol; +type AtStrict = O[K & keyof O]; +type AtLoose = O extends unknown ? AtStrict : never; +export type At = { + 1: AtStrict; + 0: AtLoose; +}[strict]; + +export type ComputeRaw = A extends Function ? A : { + [K in keyof A]: A[K]; +} & {}; + +export type OptionalFlat = { + [K in keyof O]?: O[K]; +} & {}; + +type _Record = { + [P in K]: T; +}; + +// cause typescript not to expand types and preserve names +type NoExpand = T extends unknown ? T : never; + +// this type assumes the passed object is entirely optional +export type AtLeast = NoExpand< + O extends unknown + ? | (K extends keyof O ? { [P in K]: O[P] } & O : O) + | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O + : never>; + +type _Strict = U extends unknown ? U & OptionalFlat<_Record, keyof U>, never>> : never; + +export type Strict = ComputeRaw<_Strict>; +/** End Helper Types for "Merge" **/ + +export type Merge = ComputeRaw<_Merge>>; + +export type Boolean = True | False + +export type True = 1 + +export type False = 0 + +export type Not = { + 0: 1 + 1: 0 +}[B] + +export type Extends = [A1] extends [never] + ? 0 // anything `never` is false + : A1 extends A2 + ? 1 + : 0 + +export type Has = Not< + Extends, U1> +> + +export type Or = { + 0: { + 0: 0 + 1: 1 + } + 1: { + 0: 1 + 1: 1 + } +}[B1][B2] + +export type Keys = U extends unknown ? keyof U : never + +export type GetScalarType = O extends object ? { + [P in keyof T]: P extends keyof O + ? O[P] + : never +} : never + +type FieldPaths< + T, + U = Omit +> = IsObject extends True ? U : T + +export type GetHavingFields = { + [K in keyof T]: Or< + Or, Extends<'AND', K>>, + Extends<'NOT', K> + > extends True + ? // infer is only needed to not hit TS limit + // based on the brilliant idea of Pierre-Antoine Mills + // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437 + T[K] extends infer TK + ? GetHavingFields extends object ? Merge> : never> + : never + : {} extends FieldPaths + ? never + : K +}[keyof T] + +/** + * Convert tuple to union + */ +type _TupleToUnion = T extends (infer E)[] ? E : never +type TupleToUnion = _TupleToUnion +export type MaybeTupleToUnion = T extends any[] ? TupleToUnion : T + +/** + * Like `Pick`, but additionally can also accept an array of keys + */ +export type PickEnumerable | keyof T> = Prisma__Pick> + +/** + * Exclude all keys with underscores + */ +export type ExcludeUnderscoreKeys = T extends `_${string}` ? never : T + + +export type FieldRef = runtime.FieldRef + +type FieldRefInputType = Model extends never ? never : FieldRef + + +export const ModelName = { + User: 'User', + Bounty: 'Bounty', + BountyVolunteer: 'BountyVolunteer', + BountySkillRequirement: 'BountySkillRequirement', + BountyEquipmentRequirement: 'BountyEquipmentRequirement' +} as const + +export type ModelName = (typeof ModelName)[keyof typeof ModelName] + + + +export interface TypeMapCb extends runtime.Types.Utils.Fn<{extArgs: runtime.Types.Extensions.InternalArgs }, runtime.Types.Utils.Record> { + returns: TypeMap +} + +export type TypeMap = { + globalOmitOptions: { + omit: GlobalOmitOptions + } + meta: { + modelProps: "user" | "bounty" | "bountyVolunteer" | "bountySkillRequirement" | "bountyEquipmentRequirement" + txIsolationLevel: TransactionIsolationLevel + } + model: { + User: { + payload: Prisma.$UserPayload + fields: Prisma.UserFieldRefs + operations: { + findUnique: { + args: Prisma.UserFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.UserFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.UserFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.UserFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.UserFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.UserCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.UserCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.UserCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.UserDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.UserUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.UserDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.UserUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.UserUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.UserUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.UserAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.UserGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.UserCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + Bounty: { + payload: Prisma.$BountyPayload + fields: Prisma.BountyFieldRefs + operations: { + findUnique: { + args: Prisma.BountyFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.BountyFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.BountyFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.BountyFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.BountyFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.BountyCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.BountyCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.BountyCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.BountyDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.BountyUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.BountyDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.BountyUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.BountyUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.BountyUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.BountyAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.BountyGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.BountyCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + BountyVolunteer: { + payload: Prisma.$BountyVolunteerPayload + fields: Prisma.BountyVolunteerFieldRefs + operations: { + findUnique: { + args: Prisma.BountyVolunteerFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.BountyVolunteerFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.BountyVolunteerFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.BountyVolunteerFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.BountyVolunteerFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.BountyVolunteerCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.BountyVolunteerCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.BountyVolunteerCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.BountyVolunteerDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.BountyVolunteerUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.BountyVolunteerDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.BountyVolunteerUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.BountyVolunteerUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.BountyVolunteerUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.BountyVolunteerAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.BountyVolunteerGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.BountyVolunteerCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + BountySkillRequirement: { + payload: Prisma.$BountySkillRequirementPayload + fields: Prisma.BountySkillRequirementFieldRefs + operations: { + findUnique: { + args: Prisma.BountySkillRequirementFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.BountySkillRequirementFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.BountySkillRequirementFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.BountySkillRequirementFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.BountySkillRequirementFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.BountySkillRequirementCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.BountySkillRequirementCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.BountySkillRequirementCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.BountySkillRequirementDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.BountySkillRequirementUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.BountySkillRequirementDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.BountySkillRequirementUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.BountySkillRequirementUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.BountySkillRequirementUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.BountySkillRequirementAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.BountySkillRequirementGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.BountySkillRequirementCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + BountyEquipmentRequirement: { + payload: Prisma.$BountyEquipmentRequirementPayload + fields: Prisma.BountyEquipmentRequirementFieldRefs + operations: { + findUnique: { + args: Prisma.BountyEquipmentRequirementFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.BountyEquipmentRequirementFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.BountyEquipmentRequirementFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.BountyEquipmentRequirementFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.BountyEquipmentRequirementFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.BountyEquipmentRequirementCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.BountyEquipmentRequirementCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.BountyEquipmentRequirementCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.BountyEquipmentRequirementDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.BountyEquipmentRequirementUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.BountyEquipmentRequirementDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.BountyEquipmentRequirementUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.BountyEquipmentRequirementUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.BountyEquipmentRequirementUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.BountyEquipmentRequirementAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.BountyEquipmentRequirementGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.BountyEquipmentRequirementCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + } +} & { + other: { + payload: any + operations: { + $executeRaw: { + args: [query: TemplateStringsArray | Sql, ...values: any[]], + result: any + } + $executeRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + $queryRaw: { + args: [query: TemplateStringsArray | Sql, ...values: any[]], + result: any + } + $queryRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + } + } +} + +/** + * Enums + */ + +export const TransactionIsolationLevel = runtime.makeStrictEnum({ + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' +} as const) + +export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + +export const UserScalarFieldEnum = { + id: 'id', + email: 'email', + displayName: 'displayName', + passwordHash: 'passwordHash', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] + + +export const BountyScalarFieldEnum = { + id: 'id', + title: 'title', + description: 'description', + locationLabel: 'locationLabel', + imageUrl: 'imageUrl', + latitude: 'latitude', + longitude: 'longitude', + scheduledAt: 'scheduledAt', + deadline: 'deadline', + maxVolunteers: 'maxVolunteers', + payPerVolunteer: 'payPerVolunteer', + status: 'status', + posterId: 'posterId', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + finishedAt: 'finishedAt', + verifiedAt: 'verifiedAt', + cancellationReason: 'cancellationReason' +} as const + +export type BountyScalarFieldEnum = (typeof BountyScalarFieldEnum)[keyof typeof BountyScalarFieldEnum] + + +export const BountyVolunteerScalarFieldEnum = { + bountyId: 'bountyId', + volunteerId: 'volunteerId', + status: 'status', + joinedAt: 'joinedAt', + withdrawnAt: 'withdrawnAt' +} as const + +export type BountyVolunteerScalarFieldEnum = (typeof BountyVolunteerScalarFieldEnum)[keyof typeof BountyVolunteerScalarFieldEnum] + + +export const BountySkillRequirementScalarFieldEnum = { + id: 'id', + bountyId: 'bountyId', + name: 'name', + level: 'level' +} as const + +export type BountySkillRequirementScalarFieldEnum = (typeof BountySkillRequirementScalarFieldEnum)[keyof typeof BountySkillRequirementScalarFieldEnum] + + +export const BountyEquipmentRequirementScalarFieldEnum = { + id: 'id', + bountyId: 'bountyId', + name: 'name', + level: 'level' +} as const + +export type BountyEquipmentRequirementScalarFieldEnum = (typeof BountyEquipmentRequirementScalarFieldEnum)[keyof typeof BountyEquipmentRequirementScalarFieldEnum] + + +export const SortOrder = { + asc: 'asc', + desc: 'desc' +} as const + +export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + +export const QueryMode = { + default: 'default', + insensitive: 'insensitive' +} as const + +export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + + +export const NullsOrder = { + first: 'first', + last: 'last' +} as const + +export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + + + +/** + * Field references + */ + + +/** + * Reference to a field of type 'String' + */ +export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'> + + + +/** + * Reference to a field of type 'String[]' + */ +export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'> + + + +/** + * Reference to a field of type 'DateTime' + */ +export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'> + + + +/** + * Reference to a field of type 'DateTime[]' + */ +export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'> + + + +/** + * Reference to a field of type 'Decimal' + */ +export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'> + + + +/** + * Reference to a field of type 'Decimal[]' + */ +export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'> + + + +/** + * Reference to a field of type 'Int' + */ +export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'> + + + +/** + * Reference to a field of type 'Int[]' + */ +export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'> + + + +/** + * Reference to a field of type 'BountyStatus' + */ +export type EnumBountyStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BountyStatus'> + + + +/** + * Reference to a field of type 'BountyStatus[]' + */ +export type ListEnumBountyStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BountyStatus[]'> + + + +/** + * Reference to a field of type 'VolunteerAttendanceStatus' + */ +export type EnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'VolunteerAttendanceStatus'> + + + +/** + * Reference to a field of type 'VolunteerAttendanceStatus[]' + */ +export type ListEnumVolunteerAttendanceStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'VolunteerAttendanceStatus[]'> + + + +/** + * Reference to a field of type 'RequirementLevel' + */ +export type EnumRequirementLevelFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RequirementLevel'> + + + +/** + * Reference to a field of type 'RequirementLevel[]' + */ +export type ListEnumRequirementLevelFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RequirementLevel[]'> + + + +/** + * Reference to a field of type 'Float' + */ +export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'> + + + +/** + * Reference to a field of type 'Float[]' + */ +export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'> + + +/** + * Batch Payload for updateMany & deleteMany & createMany + */ +export type BatchPayload = { + count: number +} + +export const defineExtension = runtime.Extensions.defineExtension as unknown as runtime.Types.Extensions.ExtendsHook<"define", TypeMapCb, runtime.Types.Extensions.DefaultArgs> +export type DefaultPrismaClient = PrismaClient +export type ErrorFormat = 'pretty' | 'colorless' | 'minimal' +/** + * Options common to all variants of `PrismaClientOptions`, regardless of whether you connect to your database through a driver adapter or through Prisma Accelerate. + */ +export interface PrismaClientBaseOptions { + /** + * @default "colorless" + */ + errorFormat?: ErrorFormat + /** + * @example + * ``` + * // Shorthand for `emit: 'stdout'` + * log: ['query', 'info', 'warn', 'error'] + * + * // Emit as events only + * log: [ + * { emit: 'event', level: 'query' }, + * { emit: 'event', level: 'info' }, + * { emit: 'event', level: 'warn' } + * { emit: 'event', level: 'error' } + * ] + * + * / Emit as events and log to stdout + * og: [ + * { emit: 'stdout', level: 'query' }, + * { emit: 'stdout', level: 'info' }, + * { emit: 'stdout', level: 'warn' } + * { emit: 'stdout', level: 'error' } + * + * ``` + * Read more in our [docs](https://pris.ly/d/logging). + */ + log?: (LogLevel | LogDefinition)[] + /** + * The default values for transactionOptions + * maxWait ?= 2000 + * timeout ?= 5000 + */ + transactionOptions?: { + maxWait?: number + timeout?: number + isolationLevel?: TransactionIsolationLevel + } + /** + * Global configuration for omitting model fields by default. + * + * @example + * ``` + * const prisma = new PrismaClient({ + * omit: { + * user: { + * password: true + * } + * } + * }) + * ``` + */ + omit?: GlobalOmitConfig + /** + * SQL commenter plugins that add metadata to SQL queries as comments. + * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/ + * + * @example + * ``` + * const prisma = new PrismaClient({ + * adapter, + * comments: [ + * traceContext(), + * queryInsights(), + * ], + * }) + * ``` + */ + comments?: runtime.SqlCommenterPlugin[] + /** + * Optional maximum size for the query plan cache. If not provided, a default size will be used. + * A value of `0` can be used to disable the cache entirely. A higher cache size can improve + * performance for applications that execute a large number of unique queries, while a smaller + * cache size can reduce memory usage. + * + * @example + * ``` + * const prisma = new PrismaClient({ + * adapter, + * queryPlanCacheMaxSize: 100, + * }) + * ``` + */ + queryPlanCacheMaxSize?: number +} + +/** + * `PrismaClient` options for connecting to your database through Prisma Accelerate instead of a driver adapter. + * + * Learn more: https://pris.ly/d/accelerate + */ +export interface PrismaClientOptionsWithAccelerateUrl extends PrismaClientBaseOptions { + /** + * The Prisma Accelerate connection URL. Use this option to connect to your database through Prisma Accelerate instead of using a driver adapter to connect directly. + * + * Learn more: https://pris.ly/d/accelerate + */ + accelerateUrl: string + adapter?: never +} + +/** + * `PrismaClient` options for connecting to your database through a driver adapter. This is the common case in Prisma 7. + * + * Learn more: https://pris.ly/d/driver-adapters + */ +export interface PrismaClientOptionsWithAdapter extends PrismaClientBaseOptions { + /** + * A driver adapter that PrismaClient uses to connect to your database, such as the ones provided by `@prisma/adapter-pg`, `@prisma/adapter-libsql`, `@prisma/adapter-planetscale`, etc. + * + * A driver adapter is **required** unless you connect to your database through Prisma Accelerate (in which case use `accelerateUrl` instead). + * + * Learn more: https://pris.ly/d/driver-adapters + * + * @example + * ```ts + * import { PrismaPg } from '@prisma/adapter-pg' + * import { PrismaClient } from './generated/prisma/client' + * + * const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL }) + * const prisma = new PrismaClient({ adapter }) + * ``` + */ + adapter: runtime.SqlDriverAdapterFactory + accelerateUrl?: never +} + +/** + * Options passed to the `PrismaClient` constructor. + * + * A driver adapter (or, alternatively, a Prisma Accelerate URL) is **required**. See {@link PrismaClientOptionsWithAdapter} and {@link PrismaClientOptionsWithAccelerateUrl} for the two variants. All other properties live in {@link PrismaClientBaseOptions} and are optional. + * + * Learn more about driver adapters: https://pris.ly/d/driver-adapters + */ +export type PrismaClientOptions = PrismaClientOptionsWithAccelerateUrl | PrismaClientOptionsWithAdapter +export type GlobalOmitConfig = { + user?: Prisma.UserOmit + bounty?: Prisma.BountyOmit + bountyVolunteer?: Prisma.BountyVolunteerOmit + bountySkillRequirement?: Prisma.BountySkillRequirementOmit + bountyEquipmentRequirement?: Prisma.BountyEquipmentRequirementOmit +} + +/* Types for Logging */ +export type LogLevel = 'info' | 'query' | 'warn' | 'error' +export type LogDefinition = { + level: LogLevel + emit: 'stdout' | 'event' +} + +export type CheckIsLogLevel = T extends LogLevel ? T : never; + +export type GetLogType = CheckIsLogLevel< + T extends LogDefinition ? T['level'] : T +>; + +export type GetEvents = T extends Array + ? GetLogType + : never; + +export type QueryEvent = { + timestamp: Date + query: string + params: string + duration: number + target: string +} + +export type LogEvent = { + timestamp: Date + message: string + target: string +} +/* End Types for Logging */ + + +export type PrismaAction = + | 'findUnique' + | 'findUniqueOrThrow' + | 'findMany' + | 'findFirst' + | 'findFirstOrThrow' + | 'create' + | 'createMany' + | 'createManyAndReturn' + | 'update' + | 'updateMany' + | 'updateManyAndReturn' + | 'upsert' + | 'delete' + | 'deleteMany' + | 'executeRaw' + | 'queryRaw' + | 'aggregate' + | 'count' + | 'runCommandRaw' + | 'findRaw' + | 'groupBy' + +/** + * `PrismaClient` proxy available in interactive transactions. + */ +export type TransactionClient = Omit + diff --git a/generated/prisma/internal/prismaNamespaceBrowser.ts b/generated/prisma/internal/prismaNamespaceBrowser.ts new file mode 100644 index 0000000..e72bf47 --- /dev/null +++ b/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -0,0 +1,166 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * All exports from this file are wrapped under a `Prisma` namespace object in the browser.ts file. + * While this enables partial backward compatibility, it is not part of the stable public API. + * + * If you are looking for your Models, Enums, and Input Types, please import them from the respective + * model files in the `model` directory! + */ + +import * as runtime from "@prisma/client/runtime/index-browser" + +export type * from '../models' +export type * from './prismaNamespace' + +export const Decimal = runtime.Decimal + + +export const NullTypes = { + DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull), + JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull), + AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull), +} +/** + * Helper for filtering JSON entries that have `null` on the database (empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const DbNull = runtime.DbNull + +/** + * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const JsonNull = runtime.JsonNull + +/** + * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const AnyNull = runtime.AnyNull + + +export const ModelName = { + User: 'User', + Bounty: 'Bounty', + BountyVolunteer: 'BountyVolunteer', + BountySkillRequirement: 'BountySkillRequirement', + BountyEquipmentRequirement: 'BountyEquipmentRequirement' +} as const + +export type ModelName = (typeof ModelName)[keyof typeof ModelName] + +/* + * Enums + */ + +export const TransactionIsolationLevel = runtime.makeStrictEnum({ + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' +} as const) + +export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + +export const UserScalarFieldEnum = { + id: 'id', + email: 'email', + displayName: 'displayName', + passwordHash: 'passwordHash', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] + + +export const BountyScalarFieldEnum = { + id: 'id', + title: 'title', + description: 'description', + locationLabel: 'locationLabel', + imageUrl: 'imageUrl', + latitude: 'latitude', + longitude: 'longitude', + scheduledAt: 'scheduledAt', + deadline: 'deadline', + maxVolunteers: 'maxVolunteers', + payPerVolunteer: 'payPerVolunteer', + status: 'status', + posterId: 'posterId', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + finishedAt: 'finishedAt', + verifiedAt: 'verifiedAt', + cancellationReason: 'cancellationReason' +} as const + +export type BountyScalarFieldEnum = (typeof BountyScalarFieldEnum)[keyof typeof BountyScalarFieldEnum] + + +export const BountyVolunteerScalarFieldEnum = { + bountyId: 'bountyId', + volunteerId: 'volunteerId', + status: 'status', + joinedAt: 'joinedAt', + withdrawnAt: 'withdrawnAt' +} as const + +export type BountyVolunteerScalarFieldEnum = (typeof BountyVolunteerScalarFieldEnum)[keyof typeof BountyVolunteerScalarFieldEnum] + + +export const BountySkillRequirementScalarFieldEnum = { + id: 'id', + bountyId: 'bountyId', + name: 'name', + level: 'level' +} as const + +export type BountySkillRequirementScalarFieldEnum = (typeof BountySkillRequirementScalarFieldEnum)[keyof typeof BountySkillRequirementScalarFieldEnum] + + +export const BountyEquipmentRequirementScalarFieldEnum = { + id: 'id', + bountyId: 'bountyId', + name: 'name', + level: 'level' +} as const + +export type BountyEquipmentRequirementScalarFieldEnum = (typeof BountyEquipmentRequirementScalarFieldEnum)[keyof typeof BountyEquipmentRequirementScalarFieldEnum] + + +export const SortOrder = { + asc: 'asc', + desc: 'desc' +} as const + +export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + +export const QueryMode = { + default: 'default', + insensitive: 'insensitive' +} as const + +export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + + +export const NullsOrder = { + first: 'first', + last: 'last' +} as const + +export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + diff --git a/generated/prisma/models.ts b/generated/prisma/models.ts new file mode 100644 index 0000000..9bccc70 --- /dev/null +++ b/generated/prisma/models.ts @@ -0,0 +1,16 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This is a barrel export file for all models and their related types. + * + * 🟢 You can import this file directly. + */ +export type * from './models/User' +export type * from './models/Bounty' +export type * from './models/BountyVolunteer' +export type * from './models/BountySkillRequirement' +export type * from './models/BountyEquipmentRequirement' +export type * from './commonInputTypes' \ No newline at end of file diff --git a/generated/prisma/models/Bounty.ts b/generated/prisma/models/Bounty.ts new file mode 100644 index 0000000..1fb7df2 --- /dev/null +++ b/generated/prisma/models/Bounty.ts @@ -0,0 +1,2435 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `Bounty` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums" +import type * as Prisma from "../internal/prismaNamespace" + +/** + * Model Bounty + * + */ +export type BountyModel = runtime.Types.Result.DefaultSelection + +export type AggregateBounty = { + _count: BountyCountAggregateOutputType | null + _avg: BountyAvgAggregateOutputType | null + _sum: BountySumAggregateOutputType | null + _min: BountyMinAggregateOutputType | null + _max: BountyMaxAggregateOutputType | null +} + +export type BountyAvgAggregateOutputType = { + latitude: runtime.Decimal | null + longitude: runtime.Decimal | null + maxVolunteers: number | null + payPerVolunteer: runtime.Decimal | null +} + +export type BountySumAggregateOutputType = { + latitude: runtime.Decimal | null + longitude: runtime.Decimal | null + maxVolunteers: number | null + payPerVolunteer: runtime.Decimal | null +} + +export type BountyMinAggregateOutputType = { + id: string | null + title: string | null + description: string | null + locationLabel: string | null + imageUrl: string | null + latitude: runtime.Decimal | null + longitude: runtime.Decimal | null + scheduledAt: Date | null + deadline: Date | null + maxVolunteers: number | null + payPerVolunteer: runtime.Decimal | null + status: $Enums.BountyStatus | null + posterId: string | null + createdAt: Date | null + updatedAt: Date | null + finishedAt: Date | null + verifiedAt: Date | null + cancellationReason: string | null +} + +export type BountyMaxAggregateOutputType = { + id: string | null + title: string | null + description: string | null + locationLabel: string | null + imageUrl: string | null + latitude: runtime.Decimal | null + longitude: runtime.Decimal | null + scheduledAt: Date | null + deadline: Date | null + maxVolunteers: number | null + payPerVolunteer: runtime.Decimal | null + status: $Enums.BountyStatus | null + posterId: string | null + createdAt: Date | null + updatedAt: Date | null + finishedAt: Date | null + verifiedAt: Date | null + cancellationReason: string | null +} + +export type BountyCountAggregateOutputType = { + id: number + title: number + description: number + locationLabel: number + imageUrl: number + latitude: number + longitude: number + scheduledAt: number + deadline: number + maxVolunteers: number + payPerVolunteer: number + status: number + posterId: number + createdAt: number + updatedAt: number + finishedAt: number + verifiedAt: number + cancellationReason: number + _all: number +} + + +export type BountyAvgAggregateInputType = { + latitude?: true + longitude?: true + maxVolunteers?: true + payPerVolunteer?: true +} + +export type BountySumAggregateInputType = { + latitude?: true + longitude?: true + maxVolunteers?: true + payPerVolunteer?: true +} + +export type BountyMinAggregateInputType = { + id?: true + title?: true + description?: true + locationLabel?: true + imageUrl?: true + latitude?: true + longitude?: true + scheduledAt?: true + deadline?: true + maxVolunteers?: true + payPerVolunteer?: true + status?: true + posterId?: true + createdAt?: true + updatedAt?: true + finishedAt?: true + verifiedAt?: true + cancellationReason?: true +} + +export type BountyMaxAggregateInputType = { + id?: true + title?: true + description?: true + locationLabel?: true + imageUrl?: true + latitude?: true + longitude?: true + scheduledAt?: true + deadline?: true + maxVolunteers?: true + payPerVolunteer?: true + status?: true + posterId?: true + createdAt?: true + updatedAt?: true + finishedAt?: true + verifiedAt?: true + cancellationReason?: true +} + +export type BountyCountAggregateInputType = { + id?: true + title?: true + description?: true + locationLabel?: true + imageUrl?: true + latitude?: true + longitude?: true + scheduledAt?: true + deadline?: true + maxVolunteers?: true + payPerVolunteer?: true + status?: true + posterId?: true + createdAt?: true + updatedAt?: true + finishedAt?: true + verifiedAt?: true + cancellationReason?: true + _all?: true +} + +export type BountyAggregateArgs = { + /** + * Filter which Bounty to aggregate. + */ + where?: Prisma.BountyWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Bounties to fetch. + */ + orderBy?: Prisma.BountyOrderByWithRelationInput | Prisma.BountyOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.BountyWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Bounties from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Bounties. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Bounties + **/ + _count?: true | BountyCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: BountyAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: BountySumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: BountyMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: BountyMaxAggregateInputType +} + +export type GetBountyAggregateType = { + [P in keyof T & keyof AggregateBounty]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type BountyGroupByArgs = { + where?: Prisma.BountyWhereInput + orderBy?: Prisma.BountyOrderByWithAggregationInput | Prisma.BountyOrderByWithAggregationInput[] + by: Prisma.BountyScalarFieldEnum[] | Prisma.BountyScalarFieldEnum + having?: Prisma.BountyScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: BountyCountAggregateInputType | true + _avg?: BountyAvgAggregateInputType + _sum?: BountySumAggregateInputType + _min?: BountyMinAggregateInputType + _max?: BountyMaxAggregateInputType +} + +export type BountyGroupByOutputType = { + id: string + title: string + description: string + locationLabel: string + imageUrl: string | null + latitude: runtime.Decimal | null + longitude: runtime.Decimal | null + scheduledAt: Date + deadline: Date + maxVolunteers: number + payPerVolunteer: runtime.Decimal + status: $Enums.BountyStatus + posterId: string + createdAt: Date + updatedAt: Date + finishedAt: Date | null + verifiedAt: Date | null + cancellationReason: string | null + _count: BountyCountAggregateOutputType | null + _avg: BountyAvgAggregateOutputType | null + _sum: BountySumAggregateOutputType | null + _min: BountyMinAggregateOutputType | null + _max: BountyMaxAggregateOutputType | null +} + +export type GetBountyGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof BountyGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type BountyWhereInput = { + AND?: Prisma.BountyWhereInput | Prisma.BountyWhereInput[] + OR?: Prisma.BountyWhereInput[] + NOT?: Prisma.BountyWhereInput | Prisma.BountyWhereInput[] + id?: Prisma.StringFilter<"Bounty"> | string + title?: Prisma.StringFilter<"Bounty"> | string + description?: Prisma.StringFilter<"Bounty"> | string + locationLabel?: Prisma.StringFilter<"Bounty"> | string + imageUrl?: Prisma.StringNullableFilter<"Bounty"> | string | null + latitude?: Prisma.DecimalNullableFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.DecimalNullableFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + deadline?: Prisma.DateTimeFilter<"Bounty"> | Date | string + maxVolunteers?: Prisma.IntFilter<"Bounty"> | number + payPerVolunteer?: Prisma.DecimalFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFilter<"Bounty"> | $Enums.BountyStatus + posterId?: Prisma.StringFilter<"Bounty"> | string + createdAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + finishedAt?: Prisma.DateTimeNullableFilter<"Bounty"> | Date | string | null + verifiedAt?: Prisma.DateTimeNullableFilter<"Bounty"> | Date | string | null + cancellationReason?: Prisma.StringNullableFilter<"Bounty"> | string | null + poster?: Prisma.XOR + volunteerAttendances?: Prisma.BountyVolunteerListRelationFilter + skillRequirements?: Prisma.BountySkillRequirementListRelationFilter + equipmentRequirements?: Prisma.BountyEquipmentRequirementListRelationFilter +} + +export type BountyOrderByWithRelationInput = { + id?: Prisma.SortOrder + title?: Prisma.SortOrder + description?: Prisma.SortOrder + locationLabel?: Prisma.SortOrder + imageUrl?: Prisma.SortOrderInput | Prisma.SortOrder + latitude?: Prisma.SortOrderInput | Prisma.SortOrder + longitude?: Prisma.SortOrderInput | Prisma.SortOrder + scheduledAt?: Prisma.SortOrder + deadline?: Prisma.SortOrder + maxVolunteers?: Prisma.SortOrder + payPerVolunteer?: Prisma.SortOrder + status?: Prisma.SortOrder + posterId?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + finishedAt?: Prisma.SortOrderInput | Prisma.SortOrder + verifiedAt?: Prisma.SortOrderInput | Prisma.SortOrder + cancellationReason?: Prisma.SortOrderInput | Prisma.SortOrder + poster?: Prisma.UserOrderByWithRelationInput + volunteerAttendances?: Prisma.BountyVolunteerOrderByRelationAggregateInput + skillRequirements?: Prisma.BountySkillRequirementOrderByRelationAggregateInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementOrderByRelationAggregateInput +} + +export type BountyWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: Prisma.BountyWhereInput | Prisma.BountyWhereInput[] + OR?: Prisma.BountyWhereInput[] + NOT?: Prisma.BountyWhereInput | Prisma.BountyWhereInput[] + title?: Prisma.StringFilter<"Bounty"> | string + description?: Prisma.StringFilter<"Bounty"> | string + locationLabel?: Prisma.StringFilter<"Bounty"> | string + imageUrl?: Prisma.StringNullableFilter<"Bounty"> | string | null + latitude?: Prisma.DecimalNullableFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.DecimalNullableFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + deadline?: Prisma.DateTimeFilter<"Bounty"> | Date | string + maxVolunteers?: Prisma.IntFilter<"Bounty"> | number + payPerVolunteer?: Prisma.DecimalFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFilter<"Bounty"> | $Enums.BountyStatus + posterId?: Prisma.StringFilter<"Bounty"> | string + createdAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + finishedAt?: Prisma.DateTimeNullableFilter<"Bounty"> | Date | string | null + verifiedAt?: Prisma.DateTimeNullableFilter<"Bounty"> | Date | string | null + cancellationReason?: Prisma.StringNullableFilter<"Bounty"> | string | null + poster?: Prisma.XOR + volunteerAttendances?: Prisma.BountyVolunteerListRelationFilter + skillRequirements?: Prisma.BountySkillRequirementListRelationFilter + equipmentRequirements?: Prisma.BountyEquipmentRequirementListRelationFilter +}, "id"> + +export type BountyOrderByWithAggregationInput = { + id?: Prisma.SortOrder + title?: Prisma.SortOrder + description?: Prisma.SortOrder + locationLabel?: Prisma.SortOrder + imageUrl?: Prisma.SortOrderInput | Prisma.SortOrder + latitude?: Prisma.SortOrderInput | Prisma.SortOrder + longitude?: Prisma.SortOrderInput | Prisma.SortOrder + scheduledAt?: Prisma.SortOrder + deadline?: Prisma.SortOrder + maxVolunteers?: Prisma.SortOrder + payPerVolunteer?: Prisma.SortOrder + status?: Prisma.SortOrder + posterId?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + finishedAt?: Prisma.SortOrderInput | Prisma.SortOrder + verifiedAt?: Prisma.SortOrderInput | Prisma.SortOrder + cancellationReason?: Prisma.SortOrderInput | Prisma.SortOrder + _count?: Prisma.BountyCountOrderByAggregateInput + _avg?: Prisma.BountyAvgOrderByAggregateInput + _max?: Prisma.BountyMaxOrderByAggregateInput + _min?: Prisma.BountyMinOrderByAggregateInput + _sum?: Prisma.BountySumOrderByAggregateInput +} + +export type BountyScalarWhereWithAggregatesInput = { + AND?: Prisma.BountyScalarWhereWithAggregatesInput | Prisma.BountyScalarWhereWithAggregatesInput[] + OR?: Prisma.BountyScalarWhereWithAggregatesInput[] + NOT?: Prisma.BountyScalarWhereWithAggregatesInput | Prisma.BountyScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"Bounty"> | string + title?: Prisma.StringWithAggregatesFilter<"Bounty"> | string + description?: Prisma.StringWithAggregatesFilter<"Bounty"> | string + locationLabel?: Prisma.StringWithAggregatesFilter<"Bounty"> | string + imageUrl?: Prisma.StringNullableWithAggregatesFilter<"Bounty"> | string | null + latitude?: Prisma.DecimalNullableWithAggregatesFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.DecimalNullableWithAggregatesFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeWithAggregatesFilter<"Bounty"> | Date | string + deadline?: Prisma.DateTimeWithAggregatesFilter<"Bounty"> | Date | string + maxVolunteers?: Prisma.IntWithAggregatesFilter<"Bounty"> | number + payPerVolunteer?: Prisma.DecimalWithAggregatesFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusWithAggregatesFilter<"Bounty"> | $Enums.BountyStatus + posterId?: Prisma.StringWithAggregatesFilter<"Bounty"> | string + createdAt?: Prisma.DateTimeWithAggregatesFilter<"Bounty"> | Date | string + updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Bounty"> | Date | string + finishedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"Bounty"> | Date | string | null + verifiedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"Bounty"> | Date | string | null + cancellationReason?: Prisma.StringNullableWithAggregatesFilter<"Bounty"> | string | null +} + +export type BountyCreateInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + poster: Prisma.UserCreateNestedOneWithoutPostedBountiesInput + volunteerAttendances?: Prisma.BountyVolunteerCreateNestedManyWithoutBountyInput + skillRequirements?: Prisma.BountySkillRequirementCreateNestedManyWithoutBountyInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementCreateNestedManyWithoutBountyInput +} + +export type BountyUncheckedCreateInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + posterId: string + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + volunteerAttendances?: Prisma.BountyVolunteerUncheckedCreateNestedManyWithoutBountyInput + skillRequirements?: Prisma.BountySkillRequirementUncheckedCreateNestedManyWithoutBountyInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUncheckedCreateNestedManyWithoutBountyInput +} + +export type BountyUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + poster?: Prisma.UserUpdateOneRequiredWithoutPostedBountiesNestedInput + volunteerAttendances?: Prisma.BountyVolunteerUpdateManyWithoutBountyNestedInput + skillRequirements?: Prisma.BountySkillRequirementUpdateManyWithoutBountyNestedInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUpdateManyWithoutBountyNestedInput +} + +export type BountyUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + posterId?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + volunteerAttendances?: Prisma.BountyVolunteerUncheckedUpdateManyWithoutBountyNestedInput + skillRequirements?: Prisma.BountySkillRequirementUncheckedUpdateManyWithoutBountyNestedInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUncheckedUpdateManyWithoutBountyNestedInput +} + +export type BountyCreateManyInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + posterId: string + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null +} + +export type BountyUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + +export type BountyUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + posterId?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + +export type BountyListRelationFilter = { + every?: Prisma.BountyWhereInput + some?: Prisma.BountyWhereInput + none?: Prisma.BountyWhereInput +} + +export type BountyOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder +} + +export type BountyCountOrderByAggregateInput = { + id?: Prisma.SortOrder + title?: Prisma.SortOrder + description?: Prisma.SortOrder + locationLabel?: Prisma.SortOrder + imageUrl?: Prisma.SortOrder + latitude?: Prisma.SortOrder + longitude?: Prisma.SortOrder + scheduledAt?: Prisma.SortOrder + deadline?: Prisma.SortOrder + maxVolunteers?: Prisma.SortOrder + payPerVolunteer?: Prisma.SortOrder + status?: Prisma.SortOrder + posterId?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + finishedAt?: Prisma.SortOrder + verifiedAt?: Prisma.SortOrder + cancellationReason?: Prisma.SortOrder +} + +export type BountyAvgOrderByAggregateInput = { + latitude?: Prisma.SortOrder + longitude?: Prisma.SortOrder + maxVolunteers?: Prisma.SortOrder + payPerVolunteer?: Prisma.SortOrder +} + +export type BountyMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + title?: Prisma.SortOrder + description?: Prisma.SortOrder + locationLabel?: Prisma.SortOrder + imageUrl?: Prisma.SortOrder + latitude?: Prisma.SortOrder + longitude?: Prisma.SortOrder + scheduledAt?: Prisma.SortOrder + deadline?: Prisma.SortOrder + maxVolunteers?: Prisma.SortOrder + payPerVolunteer?: Prisma.SortOrder + status?: Prisma.SortOrder + posterId?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + finishedAt?: Prisma.SortOrder + verifiedAt?: Prisma.SortOrder + cancellationReason?: Prisma.SortOrder +} + +export type BountyMinOrderByAggregateInput = { + id?: Prisma.SortOrder + title?: Prisma.SortOrder + description?: Prisma.SortOrder + locationLabel?: Prisma.SortOrder + imageUrl?: Prisma.SortOrder + latitude?: Prisma.SortOrder + longitude?: Prisma.SortOrder + scheduledAt?: Prisma.SortOrder + deadline?: Prisma.SortOrder + maxVolunteers?: Prisma.SortOrder + payPerVolunteer?: Prisma.SortOrder + status?: Prisma.SortOrder + posterId?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + finishedAt?: Prisma.SortOrder + verifiedAt?: Prisma.SortOrder + cancellationReason?: Prisma.SortOrder +} + +export type BountySumOrderByAggregateInput = { + latitude?: Prisma.SortOrder + longitude?: Prisma.SortOrder + maxVolunteers?: Prisma.SortOrder + payPerVolunteer?: Prisma.SortOrder +} + +export type BountyScalarRelationFilter = { + is?: Prisma.BountyWhereInput + isNot?: Prisma.BountyWhereInput +} + +export type BountyCreateNestedManyWithoutPosterInput = { + create?: Prisma.XOR | Prisma.BountyCreateWithoutPosterInput[] | Prisma.BountyUncheckedCreateWithoutPosterInput[] + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutPosterInput | Prisma.BountyCreateOrConnectWithoutPosterInput[] + createMany?: Prisma.BountyCreateManyPosterInputEnvelope + connect?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] +} + +export type BountyUncheckedCreateNestedManyWithoutPosterInput = { + create?: Prisma.XOR | Prisma.BountyCreateWithoutPosterInput[] | Prisma.BountyUncheckedCreateWithoutPosterInput[] + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutPosterInput | Prisma.BountyCreateOrConnectWithoutPosterInput[] + createMany?: Prisma.BountyCreateManyPosterInputEnvelope + connect?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] +} + +export type BountyUpdateManyWithoutPosterNestedInput = { + create?: Prisma.XOR | Prisma.BountyCreateWithoutPosterInput[] | Prisma.BountyUncheckedCreateWithoutPosterInput[] + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutPosterInput | Prisma.BountyCreateOrConnectWithoutPosterInput[] + upsert?: Prisma.BountyUpsertWithWhereUniqueWithoutPosterInput | Prisma.BountyUpsertWithWhereUniqueWithoutPosterInput[] + createMany?: Prisma.BountyCreateManyPosterInputEnvelope + set?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] + disconnect?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] + delete?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] + connect?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] + update?: Prisma.BountyUpdateWithWhereUniqueWithoutPosterInput | Prisma.BountyUpdateWithWhereUniqueWithoutPosterInput[] + updateMany?: Prisma.BountyUpdateManyWithWhereWithoutPosterInput | Prisma.BountyUpdateManyWithWhereWithoutPosterInput[] + deleteMany?: Prisma.BountyScalarWhereInput | Prisma.BountyScalarWhereInput[] +} + +export type BountyUncheckedUpdateManyWithoutPosterNestedInput = { + create?: Prisma.XOR | Prisma.BountyCreateWithoutPosterInput[] | Prisma.BountyUncheckedCreateWithoutPosterInput[] + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutPosterInput | Prisma.BountyCreateOrConnectWithoutPosterInput[] + upsert?: Prisma.BountyUpsertWithWhereUniqueWithoutPosterInput | Prisma.BountyUpsertWithWhereUniqueWithoutPosterInput[] + createMany?: Prisma.BountyCreateManyPosterInputEnvelope + set?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] + disconnect?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] + delete?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] + connect?: Prisma.BountyWhereUniqueInput | Prisma.BountyWhereUniqueInput[] + update?: Prisma.BountyUpdateWithWhereUniqueWithoutPosterInput | Prisma.BountyUpdateWithWhereUniqueWithoutPosterInput[] + updateMany?: Prisma.BountyUpdateManyWithWhereWithoutPosterInput | Prisma.BountyUpdateManyWithWhereWithoutPosterInput[] + deleteMany?: Prisma.BountyScalarWhereInput | Prisma.BountyScalarWhereInput[] +} + +export type NullableStringFieldUpdateOperationsInput = { + set?: string | null +} + +export type NullableDecimalFieldUpdateOperationsInput = { + set?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + increment?: runtime.Decimal | runtime.DecimalJsLike | number | string + decrement?: runtime.Decimal | runtime.DecimalJsLike | number | string + multiply?: runtime.Decimal | runtime.DecimalJsLike | number | string + divide?: runtime.Decimal | runtime.DecimalJsLike | number | string +} + +export type IntFieldUpdateOperationsInput = { + set?: number + increment?: number + decrement?: number + multiply?: number + divide?: number +} + +export type DecimalFieldUpdateOperationsInput = { + set?: runtime.Decimal | runtime.DecimalJsLike | number | string + increment?: runtime.Decimal | runtime.DecimalJsLike | number | string + decrement?: runtime.Decimal | runtime.DecimalJsLike | number | string + multiply?: runtime.Decimal | runtime.DecimalJsLike | number | string + divide?: runtime.Decimal | runtime.DecimalJsLike | number | string +} + +export type EnumBountyStatusFieldUpdateOperationsInput = { + set?: $Enums.BountyStatus +} + +export type NullableDateTimeFieldUpdateOperationsInput = { + set?: Date | string | null +} + +export type BountyCreateNestedOneWithoutVolunteerAttendancesInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutVolunteerAttendancesInput + connect?: Prisma.BountyWhereUniqueInput +} + +export type BountyUpdateOneRequiredWithoutVolunteerAttendancesNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutVolunteerAttendancesInput + upsert?: Prisma.BountyUpsertWithoutVolunteerAttendancesInput + connect?: Prisma.BountyWhereUniqueInput + update?: Prisma.XOR, Prisma.BountyUncheckedUpdateWithoutVolunteerAttendancesInput> +} + +export type BountyCreateNestedOneWithoutSkillRequirementsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutSkillRequirementsInput + connect?: Prisma.BountyWhereUniqueInput +} + +export type BountyUpdateOneRequiredWithoutSkillRequirementsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutSkillRequirementsInput + upsert?: Prisma.BountyUpsertWithoutSkillRequirementsInput + connect?: Prisma.BountyWhereUniqueInput + update?: Prisma.XOR, Prisma.BountyUncheckedUpdateWithoutSkillRequirementsInput> +} + +export type BountyCreateNestedOneWithoutEquipmentRequirementsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutEquipmentRequirementsInput + connect?: Prisma.BountyWhereUniqueInput +} + +export type BountyUpdateOneRequiredWithoutEquipmentRequirementsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.BountyCreateOrConnectWithoutEquipmentRequirementsInput + upsert?: Prisma.BountyUpsertWithoutEquipmentRequirementsInput + connect?: Prisma.BountyWhereUniqueInput + update?: Prisma.XOR, Prisma.BountyUncheckedUpdateWithoutEquipmentRequirementsInput> +} + +export type BountyCreateWithoutPosterInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + volunteerAttendances?: Prisma.BountyVolunteerCreateNestedManyWithoutBountyInput + skillRequirements?: Prisma.BountySkillRequirementCreateNestedManyWithoutBountyInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementCreateNestedManyWithoutBountyInput +} + +export type BountyUncheckedCreateWithoutPosterInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + volunteerAttendances?: Prisma.BountyVolunteerUncheckedCreateNestedManyWithoutBountyInput + skillRequirements?: Prisma.BountySkillRequirementUncheckedCreateNestedManyWithoutBountyInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUncheckedCreateNestedManyWithoutBountyInput +} + +export type BountyCreateOrConnectWithoutPosterInput = { + where: Prisma.BountyWhereUniqueInput + create: Prisma.XOR +} + +export type BountyCreateManyPosterInputEnvelope = { + data: Prisma.BountyCreateManyPosterInput | Prisma.BountyCreateManyPosterInput[] + skipDuplicates?: boolean +} + +export type BountyUpsertWithWhereUniqueWithoutPosterInput = { + where: Prisma.BountyWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type BountyUpdateWithWhereUniqueWithoutPosterInput = { + where: Prisma.BountyWhereUniqueInput + data: Prisma.XOR +} + +export type BountyUpdateManyWithWhereWithoutPosterInput = { + where: Prisma.BountyScalarWhereInput + data: Prisma.XOR +} + +export type BountyScalarWhereInput = { + AND?: Prisma.BountyScalarWhereInput | Prisma.BountyScalarWhereInput[] + OR?: Prisma.BountyScalarWhereInput[] + NOT?: Prisma.BountyScalarWhereInput | Prisma.BountyScalarWhereInput[] + id?: Prisma.StringFilter<"Bounty"> | string + title?: Prisma.StringFilter<"Bounty"> | string + description?: Prisma.StringFilter<"Bounty"> | string + locationLabel?: Prisma.StringFilter<"Bounty"> | string + imageUrl?: Prisma.StringNullableFilter<"Bounty"> | string | null + latitude?: Prisma.DecimalNullableFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.DecimalNullableFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + deadline?: Prisma.DateTimeFilter<"Bounty"> | Date | string + maxVolunteers?: Prisma.IntFilter<"Bounty"> | number + payPerVolunteer?: Prisma.DecimalFilter<"Bounty"> | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFilter<"Bounty"> | $Enums.BountyStatus + posterId?: Prisma.StringFilter<"Bounty"> | string + createdAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"Bounty"> | Date | string + finishedAt?: Prisma.DateTimeNullableFilter<"Bounty"> | Date | string | null + verifiedAt?: Prisma.DateTimeNullableFilter<"Bounty"> | Date | string | null + cancellationReason?: Prisma.StringNullableFilter<"Bounty"> | string | null +} + +export type BountyCreateWithoutVolunteerAttendancesInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + poster: Prisma.UserCreateNestedOneWithoutPostedBountiesInput + skillRequirements?: Prisma.BountySkillRequirementCreateNestedManyWithoutBountyInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementCreateNestedManyWithoutBountyInput +} + +export type BountyUncheckedCreateWithoutVolunteerAttendancesInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + posterId: string + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + skillRequirements?: Prisma.BountySkillRequirementUncheckedCreateNestedManyWithoutBountyInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUncheckedCreateNestedManyWithoutBountyInput +} + +export type BountyCreateOrConnectWithoutVolunteerAttendancesInput = { + where: Prisma.BountyWhereUniqueInput + create: Prisma.XOR +} + +export type BountyUpsertWithoutVolunteerAttendancesInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.BountyWhereInput +} + +export type BountyUpdateToOneWithWhereWithoutVolunteerAttendancesInput = { + where?: Prisma.BountyWhereInput + data: Prisma.XOR +} + +export type BountyUpdateWithoutVolunteerAttendancesInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + poster?: Prisma.UserUpdateOneRequiredWithoutPostedBountiesNestedInput + skillRequirements?: Prisma.BountySkillRequirementUpdateManyWithoutBountyNestedInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUpdateManyWithoutBountyNestedInput +} + +export type BountyUncheckedUpdateWithoutVolunteerAttendancesInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + posterId?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + skillRequirements?: Prisma.BountySkillRequirementUncheckedUpdateManyWithoutBountyNestedInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUncheckedUpdateManyWithoutBountyNestedInput +} + +export type BountyCreateWithoutSkillRequirementsInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + poster: Prisma.UserCreateNestedOneWithoutPostedBountiesInput + volunteerAttendances?: Prisma.BountyVolunteerCreateNestedManyWithoutBountyInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementCreateNestedManyWithoutBountyInput +} + +export type BountyUncheckedCreateWithoutSkillRequirementsInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + posterId: string + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + volunteerAttendances?: Prisma.BountyVolunteerUncheckedCreateNestedManyWithoutBountyInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUncheckedCreateNestedManyWithoutBountyInput +} + +export type BountyCreateOrConnectWithoutSkillRequirementsInput = { + where: Prisma.BountyWhereUniqueInput + create: Prisma.XOR +} + +export type BountyUpsertWithoutSkillRequirementsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.BountyWhereInput +} + +export type BountyUpdateToOneWithWhereWithoutSkillRequirementsInput = { + where?: Prisma.BountyWhereInput + data: Prisma.XOR +} + +export type BountyUpdateWithoutSkillRequirementsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + poster?: Prisma.UserUpdateOneRequiredWithoutPostedBountiesNestedInput + volunteerAttendances?: Prisma.BountyVolunteerUpdateManyWithoutBountyNestedInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUpdateManyWithoutBountyNestedInput +} + +export type BountyUncheckedUpdateWithoutSkillRequirementsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + posterId?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + volunteerAttendances?: Prisma.BountyVolunteerUncheckedUpdateManyWithoutBountyNestedInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUncheckedUpdateManyWithoutBountyNestedInput +} + +export type BountyCreateWithoutEquipmentRequirementsInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + poster: Prisma.UserCreateNestedOneWithoutPostedBountiesInput + volunteerAttendances?: Prisma.BountyVolunteerCreateNestedManyWithoutBountyInput + skillRequirements?: Prisma.BountySkillRequirementCreateNestedManyWithoutBountyInput +} + +export type BountyUncheckedCreateWithoutEquipmentRequirementsInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + posterId: string + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null + volunteerAttendances?: Prisma.BountyVolunteerUncheckedCreateNestedManyWithoutBountyInput + skillRequirements?: Prisma.BountySkillRequirementUncheckedCreateNestedManyWithoutBountyInput +} + +export type BountyCreateOrConnectWithoutEquipmentRequirementsInput = { + where: Prisma.BountyWhereUniqueInput + create: Prisma.XOR +} + +export type BountyUpsertWithoutEquipmentRequirementsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.BountyWhereInput +} + +export type BountyUpdateToOneWithWhereWithoutEquipmentRequirementsInput = { + where?: Prisma.BountyWhereInput + data: Prisma.XOR +} + +export type BountyUpdateWithoutEquipmentRequirementsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + poster?: Prisma.UserUpdateOneRequiredWithoutPostedBountiesNestedInput + volunteerAttendances?: Prisma.BountyVolunteerUpdateManyWithoutBountyNestedInput + skillRequirements?: Prisma.BountySkillRequirementUpdateManyWithoutBountyNestedInput +} + +export type BountyUncheckedUpdateWithoutEquipmentRequirementsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + posterId?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + volunteerAttendances?: Prisma.BountyVolunteerUncheckedUpdateManyWithoutBountyNestedInput + skillRequirements?: Prisma.BountySkillRequirementUncheckedUpdateManyWithoutBountyNestedInput +} + +export type BountyCreateManyPosterInput = { + id?: string + title: string + description: string + locationLabel: string + imageUrl?: string | null + latitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt: Date | string + deadline: Date | string + maxVolunteers: number + payPerVolunteer: runtime.Decimal | runtime.DecimalJsLike | number | string + status?: $Enums.BountyStatus + createdAt?: Date | string + updatedAt?: Date | string + finishedAt?: Date | string | null + verifiedAt?: Date | string | null + cancellationReason?: string | null +} + +export type BountyUpdateWithoutPosterInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + volunteerAttendances?: Prisma.BountyVolunteerUpdateManyWithoutBountyNestedInput + skillRequirements?: Prisma.BountySkillRequirementUpdateManyWithoutBountyNestedInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUpdateManyWithoutBountyNestedInput +} + +export type BountyUncheckedUpdateWithoutPosterInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + volunteerAttendances?: Prisma.BountyVolunteerUncheckedUpdateManyWithoutBountyNestedInput + skillRequirements?: Prisma.BountySkillRequirementUncheckedUpdateManyWithoutBountyNestedInput + equipmentRequirements?: Prisma.BountyEquipmentRequirementUncheckedUpdateManyWithoutBountyNestedInput +} + +export type BountyUncheckedUpdateManyWithoutPosterInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + title?: Prisma.StringFieldUpdateOperationsInput | string + description?: Prisma.StringFieldUpdateOperationsInput | string + locationLabel?: Prisma.StringFieldUpdateOperationsInput | string + imageUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + latitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + longitude?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null + scheduledAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + deadline?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + maxVolunteers?: Prisma.IntFieldUpdateOperationsInput | number + payPerVolunteer?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + status?: Prisma.EnumBountyStatusFieldUpdateOperationsInput | $Enums.BountyStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + verifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + cancellationReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null +} + + +/** + * Count Type BountyCountOutputType + */ + +export type BountyCountOutputType = { + volunteerAttendances: number + skillRequirements: number + equipmentRequirements: number +} + +export type BountyCountOutputTypeSelect = { + volunteerAttendances?: boolean | BountyCountOutputTypeCountVolunteerAttendancesArgs + skillRequirements?: boolean | BountyCountOutputTypeCountSkillRequirementsArgs + equipmentRequirements?: boolean | BountyCountOutputTypeCountEquipmentRequirementsArgs +} + +/** + * BountyCountOutputType without action + */ +export type BountyCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the BountyCountOutputType + */ + select?: Prisma.BountyCountOutputTypeSelect | null +} + +/** + * BountyCountOutputType without action + */ +export type BountyCountOutputTypeCountVolunteerAttendancesArgs = { + where?: Prisma.BountyVolunteerWhereInput +} + +/** + * BountyCountOutputType without action + */ +export type BountyCountOutputTypeCountSkillRequirementsArgs = { + where?: Prisma.BountySkillRequirementWhereInput +} + +/** + * BountyCountOutputType without action + */ +export type BountyCountOutputTypeCountEquipmentRequirementsArgs = { + where?: Prisma.BountyEquipmentRequirementWhereInput +} + + +export type BountySelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + title?: boolean + description?: boolean + locationLabel?: boolean + imageUrl?: boolean + latitude?: boolean + longitude?: boolean + scheduledAt?: boolean + deadline?: boolean + maxVolunteers?: boolean + payPerVolunteer?: boolean + status?: boolean + posterId?: boolean + createdAt?: boolean + updatedAt?: boolean + finishedAt?: boolean + verifiedAt?: boolean + cancellationReason?: boolean + poster?: boolean | Prisma.UserDefaultArgs + volunteerAttendances?: boolean | Prisma.Bounty$volunteerAttendancesArgs + skillRequirements?: boolean | Prisma.Bounty$skillRequirementsArgs + equipmentRequirements?: boolean | Prisma.Bounty$equipmentRequirementsArgs + _count?: boolean | Prisma.BountyCountOutputTypeDefaultArgs +}, ExtArgs["result"]["bounty"]> + +export type BountySelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + title?: boolean + description?: boolean + locationLabel?: boolean + imageUrl?: boolean + latitude?: boolean + longitude?: boolean + scheduledAt?: boolean + deadline?: boolean + maxVolunteers?: boolean + payPerVolunteer?: boolean + status?: boolean + posterId?: boolean + createdAt?: boolean + updatedAt?: boolean + finishedAt?: boolean + verifiedAt?: boolean + cancellationReason?: boolean + poster?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["bounty"]> + +export type BountySelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + title?: boolean + description?: boolean + locationLabel?: boolean + imageUrl?: boolean + latitude?: boolean + longitude?: boolean + scheduledAt?: boolean + deadline?: boolean + maxVolunteers?: boolean + payPerVolunteer?: boolean + status?: boolean + posterId?: boolean + createdAt?: boolean + updatedAt?: boolean + finishedAt?: boolean + verifiedAt?: boolean + cancellationReason?: boolean + poster?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["bounty"]> + +export type BountySelectScalar = { + id?: boolean + title?: boolean + description?: boolean + locationLabel?: boolean + imageUrl?: boolean + latitude?: boolean + longitude?: boolean + scheduledAt?: boolean + deadline?: boolean + maxVolunteers?: boolean + payPerVolunteer?: boolean + status?: boolean + posterId?: boolean + createdAt?: boolean + updatedAt?: boolean + finishedAt?: boolean + verifiedAt?: boolean + cancellationReason?: boolean +} + +export type BountyOmit = runtime.Types.Extensions.GetOmit<"id" | "title" | "description" | "locationLabel" | "imageUrl" | "latitude" | "longitude" | "scheduledAt" | "deadline" | "maxVolunteers" | "payPerVolunteer" | "status" | "posterId" | "createdAt" | "updatedAt" | "finishedAt" | "verifiedAt" | "cancellationReason", ExtArgs["result"]["bounty"]> +export type BountyInclude = { + poster?: boolean | Prisma.UserDefaultArgs + volunteerAttendances?: boolean | Prisma.Bounty$volunteerAttendancesArgs + skillRequirements?: boolean | Prisma.Bounty$skillRequirementsArgs + equipmentRequirements?: boolean | Prisma.Bounty$equipmentRequirementsArgs + _count?: boolean | Prisma.BountyCountOutputTypeDefaultArgs +} +export type BountyIncludeCreateManyAndReturn = { + poster?: boolean | Prisma.UserDefaultArgs +} +export type BountyIncludeUpdateManyAndReturn = { + poster?: boolean | Prisma.UserDefaultArgs +} + +export type $BountyPayload = { + name: "Bounty" + objects: { + poster: Prisma.$UserPayload + volunteerAttendances: Prisma.$BountyVolunteerPayload[] + skillRequirements: Prisma.$BountySkillRequirementPayload[] + equipmentRequirements: Prisma.$BountyEquipmentRequirementPayload[] + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + title: string + description: string + locationLabel: string + imageUrl: string | null + latitude: runtime.Decimal | null + longitude: runtime.Decimal | null + scheduledAt: Date + deadline: Date + maxVolunteers: number + payPerVolunteer: runtime.Decimal + status: $Enums.BountyStatus + posterId: string + createdAt: Date + updatedAt: Date + finishedAt: Date | null + verifiedAt: Date | null + cancellationReason: string | null + }, ExtArgs["result"]["bounty"]> + composites: {} +} + +export type BountyGetPayload = runtime.Types.Result.GetResult + +export type BountyCountArgs = + Omit & { + select?: BountyCountAggregateInputType | true + } + +export interface BountyDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['Bounty'], meta: { name: 'Bounty' } } + /** + * Find zero or one Bounty that matches the filter. + * @param {BountyFindUniqueArgs} args - Arguments to find a Bounty + * @example + * // Get one Bounty + * const bounty = await prisma.bounty.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__BountyClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one Bounty that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {BountyFindUniqueOrThrowArgs} args - Arguments to find a Bounty + * @example + * // Get one Bounty + * const bounty = await prisma.bounty.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__BountyClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Bounty that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyFindFirstArgs} args - Arguments to find a Bounty + * @example + * // Get one Bounty + * const bounty = await prisma.bounty.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__BountyClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Bounty that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyFindFirstOrThrowArgs} args - Arguments to find a Bounty + * @example + * // Get one Bounty + * const bounty = await prisma.bounty.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__BountyClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Bounties that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Bounties + * const bounties = await prisma.bounty.findMany() + * + * // Get first 10 Bounties + * const bounties = await prisma.bounty.findMany({ take: 10 }) + * + * // Only select the `id` + * const bountyWithIdOnly = await prisma.bounty.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a Bounty. + * @param {BountyCreateArgs} args - Arguments to create a Bounty. + * @example + * // Create one Bounty + * const Bounty = await prisma.bounty.create({ + * data: { + * // ... data to create a Bounty + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__BountyClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Bounties. + * @param {BountyCreateManyArgs} args - Arguments to create many Bounties. + * @example + * // Create many Bounties + * const bounty = await prisma.bounty.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Bounties and returns the data saved in the database. + * @param {BountyCreateManyAndReturnArgs} args - Arguments to create many Bounties. + * @example + * // Create many Bounties + * const bounty = await prisma.bounty.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Bounties and only return the `id` + * const bountyWithIdOnly = await prisma.bounty.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a Bounty. + * @param {BountyDeleteArgs} args - Arguments to delete one Bounty. + * @example + * // Delete one Bounty + * const Bounty = await prisma.bounty.delete({ + * where: { + * // ... filter to delete one Bounty + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__BountyClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one Bounty. + * @param {BountyUpdateArgs} args - Arguments to update one Bounty. + * @example + * // Update one Bounty + * const bounty = await prisma.bounty.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__BountyClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Bounties. + * @param {BountyDeleteManyArgs} args - Arguments to filter Bounties to delete. + * @example + * // Delete a few Bounties + * const { count } = await prisma.bounty.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Bounties. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Bounties + * const bounty = await prisma.bounty.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Bounties and returns the data updated in the database. + * @param {BountyUpdateManyAndReturnArgs} args - Arguments to update many Bounties. + * @example + * // Update many Bounties + * const bounty = await prisma.bounty.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Bounties and only return the `id` + * const bountyWithIdOnly = await prisma.bounty.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one Bounty. + * @param {BountyUpsertArgs} args - Arguments to update or create a Bounty. + * @example + * // Update or create a Bounty + * const bounty = await prisma.bounty.upsert({ + * create: { + * // ... data to create a Bounty + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Bounty we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__BountyClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Bounties. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyCountArgs} args - Arguments to filter Bounties to count. + * @example + * // Count the number of Bounties + * const count = await prisma.bounty.count({ + * where: { + * // ... the filter for the Bounties we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Bounty. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by Bounty. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends BountyGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: BountyGroupByArgs['orderBy'] } + : { orderBy?: BountyGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetBountyGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the Bounty model + */ +readonly fields: BountyFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for Bounty. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__BountyClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + poster = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + volunteerAttendances = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + skillRequirements = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + equipmentRequirements = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the Bounty model + */ +export interface BountyFieldRefs { + readonly id: Prisma.FieldRef<"Bounty", 'String'> + readonly title: Prisma.FieldRef<"Bounty", 'String'> + readonly description: Prisma.FieldRef<"Bounty", 'String'> + readonly locationLabel: Prisma.FieldRef<"Bounty", 'String'> + readonly imageUrl: Prisma.FieldRef<"Bounty", 'String'> + readonly latitude: Prisma.FieldRef<"Bounty", 'Decimal'> + readonly longitude: Prisma.FieldRef<"Bounty", 'Decimal'> + readonly scheduledAt: Prisma.FieldRef<"Bounty", 'DateTime'> + readonly deadline: Prisma.FieldRef<"Bounty", 'DateTime'> + readonly maxVolunteers: Prisma.FieldRef<"Bounty", 'Int'> + readonly payPerVolunteer: Prisma.FieldRef<"Bounty", 'Decimal'> + readonly status: Prisma.FieldRef<"Bounty", 'BountyStatus'> + readonly posterId: Prisma.FieldRef<"Bounty", 'String'> + readonly createdAt: Prisma.FieldRef<"Bounty", 'DateTime'> + readonly updatedAt: Prisma.FieldRef<"Bounty", 'DateTime'> + readonly finishedAt: Prisma.FieldRef<"Bounty", 'DateTime'> + readonly verifiedAt: Prisma.FieldRef<"Bounty", 'DateTime'> + readonly cancellationReason: Prisma.FieldRef<"Bounty", 'String'> +} + + +// Custom InputTypes +/** + * Bounty findUnique + */ +export type BountyFindUniqueArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * Filter, which Bounty to fetch. + */ + where: Prisma.BountyWhereUniqueInput +} + +/** + * Bounty findUniqueOrThrow + */ +export type BountyFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * Filter, which Bounty to fetch. + */ + where: Prisma.BountyWhereUniqueInput +} + +/** + * Bounty findFirst + */ +export type BountyFindFirstArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * Filter, which Bounty to fetch. + */ + where?: Prisma.BountyWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Bounties to fetch. + */ + orderBy?: Prisma.BountyOrderByWithRelationInput | Prisma.BountyOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Bounties. + */ + cursor?: Prisma.BountyWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Bounties from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Bounties. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Bounties. + */ + distinct?: Prisma.BountyScalarFieldEnum | Prisma.BountyScalarFieldEnum[] +} + +/** + * Bounty findFirstOrThrow + */ +export type BountyFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * Filter, which Bounty to fetch. + */ + where?: Prisma.BountyWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Bounties to fetch. + */ + orderBy?: Prisma.BountyOrderByWithRelationInput | Prisma.BountyOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Bounties. + */ + cursor?: Prisma.BountyWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Bounties from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Bounties. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Bounties. + */ + distinct?: Prisma.BountyScalarFieldEnum | Prisma.BountyScalarFieldEnum[] +} + +/** + * Bounty findMany + */ +export type BountyFindManyArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * Filter, which Bounties to fetch. + */ + where?: Prisma.BountyWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Bounties to fetch. + */ + orderBy?: Prisma.BountyOrderByWithRelationInput | Prisma.BountyOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Bounties. + */ + cursor?: Prisma.BountyWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Bounties from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Bounties. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Bounties. + */ + distinct?: Prisma.BountyScalarFieldEnum | Prisma.BountyScalarFieldEnum[] +} + +/** + * Bounty create + */ +export type BountyCreateArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * The data needed to create a Bounty. + */ + data: Prisma.XOR +} + +/** + * Bounty createMany + */ +export type BountyCreateManyArgs = { + /** + * The data used to create many Bounties. + */ + data: Prisma.BountyCreateManyInput | Prisma.BountyCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * Bounty createManyAndReturn + */ +export type BountyCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelectCreateManyAndReturn | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * The data used to create many Bounties. + */ + data: Prisma.BountyCreateManyInput | Prisma.BountyCreateManyInput[] + skipDuplicates?: boolean + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyIncludeCreateManyAndReturn | null +} + +/** + * Bounty update + */ +export type BountyUpdateArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * The data needed to update a Bounty. + */ + data: Prisma.XOR + /** + * Choose, which Bounty to update. + */ + where: Prisma.BountyWhereUniqueInput +} + +/** + * Bounty updateMany + */ +export type BountyUpdateManyArgs = { + /** + * The data used to update Bounties. + */ + data: Prisma.XOR + /** + * Filter which Bounties to update + */ + where?: Prisma.BountyWhereInput + /** + * Limit how many Bounties to update. + */ + limit?: number +} + +/** + * Bounty updateManyAndReturn + */ +export type BountyUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelectUpdateManyAndReturn | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * The data used to update Bounties. + */ + data: Prisma.XOR + /** + * Filter which Bounties to update + */ + where?: Prisma.BountyWhereInput + /** + * Limit how many Bounties to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyIncludeUpdateManyAndReturn | null +} + +/** + * Bounty upsert + */ +export type BountyUpsertArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * The filter to search for the Bounty to update in case it exists. + */ + where: Prisma.BountyWhereUniqueInput + /** + * In case the Bounty found by the `where` argument doesn't exist, create a new Bounty with this data. + */ + create: Prisma.XOR + /** + * In case the Bounty was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * Bounty delete + */ +export type BountyDeleteArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + /** + * Filter which Bounty to delete. + */ + where: Prisma.BountyWhereUniqueInput +} + +/** + * Bounty deleteMany + */ +export type BountyDeleteManyArgs = { + /** + * Filter which Bounties to delete + */ + where?: Prisma.BountyWhereInput + /** + * Limit how many Bounties to delete. + */ + limit?: number +} + +/** + * Bounty.volunteerAttendances + */ +export type Bounty$volunteerAttendancesArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + where?: Prisma.BountyVolunteerWhereInput + orderBy?: Prisma.BountyVolunteerOrderByWithRelationInput | Prisma.BountyVolunteerOrderByWithRelationInput[] + cursor?: Prisma.BountyVolunteerWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.BountyVolunteerScalarFieldEnum | Prisma.BountyVolunteerScalarFieldEnum[] +} + +/** + * Bounty.skillRequirements + */ +export type Bounty$skillRequirementsArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + where?: Prisma.BountySkillRequirementWhereInput + orderBy?: Prisma.BountySkillRequirementOrderByWithRelationInput | Prisma.BountySkillRequirementOrderByWithRelationInput[] + cursor?: Prisma.BountySkillRequirementWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.BountySkillRequirementScalarFieldEnum | Prisma.BountySkillRequirementScalarFieldEnum[] +} + +/** + * Bounty.equipmentRequirements + */ +export type Bounty$equipmentRequirementsArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + where?: Prisma.BountyEquipmentRequirementWhereInput + orderBy?: Prisma.BountyEquipmentRequirementOrderByWithRelationInput | Prisma.BountyEquipmentRequirementOrderByWithRelationInput[] + cursor?: Prisma.BountyEquipmentRequirementWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.BountyEquipmentRequirementScalarFieldEnum | Prisma.BountyEquipmentRequirementScalarFieldEnum[] +} + +/** + * Bounty without action + */ +export type BountyDefaultArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null +} diff --git a/generated/prisma/models/BountyEquipmentRequirement.ts b/generated/prisma/models/BountyEquipmentRequirement.ts new file mode 100644 index 0000000..93e41a2 --- /dev/null +++ b/generated/prisma/models/BountyEquipmentRequirement.ts @@ -0,0 +1,1316 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `BountyEquipmentRequirement` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums" +import type * as Prisma from "../internal/prismaNamespace" + +/** + * Model BountyEquipmentRequirement + * + */ +export type BountyEquipmentRequirementModel = runtime.Types.Result.DefaultSelection + +export type AggregateBountyEquipmentRequirement = { + _count: BountyEquipmentRequirementCountAggregateOutputType | null + _min: BountyEquipmentRequirementMinAggregateOutputType | null + _max: BountyEquipmentRequirementMaxAggregateOutputType | null +} + +export type BountyEquipmentRequirementMinAggregateOutputType = { + id: string | null + bountyId: string | null + name: string | null + level: $Enums.RequirementLevel | null +} + +export type BountyEquipmentRequirementMaxAggregateOutputType = { + id: string | null + bountyId: string | null + name: string | null + level: $Enums.RequirementLevel | null +} + +export type BountyEquipmentRequirementCountAggregateOutputType = { + id: number + bountyId: number + name: number + level: number + _all: number +} + + +export type BountyEquipmentRequirementMinAggregateInputType = { + id?: true + bountyId?: true + name?: true + level?: true +} + +export type BountyEquipmentRequirementMaxAggregateInputType = { + id?: true + bountyId?: true + name?: true + level?: true +} + +export type BountyEquipmentRequirementCountAggregateInputType = { + id?: true + bountyId?: true + name?: true + level?: true + _all?: true +} + +export type BountyEquipmentRequirementAggregateArgs = { + /** + * Filter which BountyEquipmentRequirement to aggregate. + */ + where?: Prisma.BountyEquipmentRequirementWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountyEquipmentRequirements to fetch. + */ + orderBy?: Prisma.BountyEquipmentRequirementOrderByWithRelationInput | Prisma.BountyEquipmentRequirementOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.BountyEquipmentRequirementWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountyEquipmentRequirements from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountyEquipmentRequirements. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned BountyEquipmentRequirements + **/ + _count?: true | BountyEquipmentRequirementCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: BountyEquipmentRequirementMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: BountyEquipmentRequirementMaxAggregateInputType +} + +export type GetBountyEquipmentRequirementAggregateType = { + [P in keyof T & keyof AggregateBountyEquipmentRequirement]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type BountyEquipmentRequirementGroupByArgs = { + where?: Prisma.BountyEquipmentRequirementWhereInput + orderBy?: Prisma.BountyEquipmentRequirementOrderByWithAggregationInput | Prisma.BountyEquipmentRequirementOrderByWithAggregationInput[] + by: Prisma.BountyEquipmentRequirementScalarFieldEnum[] | Prisma.BountyEquipmentRequirementScalarFieldEnum + having?: Prisma.BountyEquipmentRequirementScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: BountyEquipmentRequirementCountAggregateInputType | true + _min?: BountyEquipmentRequirementMinAggregateInputType + _max?: BountyEquipmentRequirementMaxAggregateInputType +} + +export type BountyEquipmentRequirementGroupByOutputType = { + id: string + bountyId: string + name: string + level: $Enums.RequirementLevel + _count: BountyEquipmentRequirementCountAggregateOutputType | null + _min: BountyEquipmentRequirementMinAggregateOutputType | null + _max: BountyEquipmentRequirementMaxAggregateOutputType | null +} + +export type GetBountyEquipmentRequirementGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof BountyEquipmentRequirementGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type BountyEquipmentRequirementWhereInput = { + AND?: Prisma.BountyEquipmentRequirementWhereInput | Prisma.BountyEquipmentRequirementWhereInput[] + OR?: Prisma.BountyEquipmentRequirementWhereInput[] + NOT?: Prisma.BountyEquipmentRequirementWhereInput | Prisma.BountyEquipmentRequirementWhereInput[] + id?: Prisma.StringFilter<"BountyEquipmentRequirement"> | string + bountyId?: Prisma.StringFilter<"BountyEquipmentRequirement"> | string + name?: Prisma.StringFilter<"BountyEquipmentRequirement"> | string + level?: Prisma.EnumRequirementLevelFilter<"BountyEquipmentRequirement"> | $Enums.RequirementLevel + bounty?: Prisma.XOR +} + +export type BountyEquipmentRequirementOrderByWithRelationInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder + bounty?: Prisma.BountyOrderByWithRelationInput +} + +export type BountyEquipmentRequirementWhereUniqueInput = Prisma.AtLeast<{ + id?: string + bountyId_name?: Prisma.BountyEquipmentRequirementBountyIdNameCompoundUniqueInput + AND?: Prisma.BountyEquipmentRequirementWhereInput | Prisma.BountyEquipmentRequirementWhereInput[] + OR?: Prisma.BountyEquipmentRequirementWhereInput[] + NOT?: Prisma.BountyEquipmentRequirementWhereInput | Prisma.BountyEquipmentRequirementWhereInput[] + bountyId?: Prisma.StringFilter<"BountyEquipmentRequirement"> | string + name?: Prisma.StringFilter<"BountyEquipmentRequirement"> | string + level?: Prisma.EnumRequirementLevelFilter<"BountyEquipmentRequirement"> | $Enums.RequirementLevel + bounty?: Prisma.XOR +}, "id" | "bountyId_name"> + +export type BountyEquipmentRequirementOrderByWithAggregationInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder + _count?: Prisma.BountyEquipmentRequirementCountOrderByAggregateInput + _max?: Prisma.BountyEquipmentRequirementMaxOrderByAggregateInput + _min?: Prisma.BountyEquipmentRequirementMinOrderByAggregateInput +} + +export type BountyEquipmentRequirementScalarWhereWithAggregatesInput = { + AND?: Prisma.BountyEquipmentRequirementScalarWhereWithAggregatesInput | Prisma.BountyEquipmentRequirementScalarWhereWithAggregatesInput[] + OR?: Prisma.BountyEquipmentRequirementScalarWhereWithAggregatesInput[] + NOT?: Prisma.BountyEquipmentRequirementScalarWhereWithAggregatesInput | Prisma.BountyEquipmentRequirementScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"BountyEquipmentRequirement"> | string + bountyId?: Prisma.StringWithAggregatesFilter<"BountyEquipmentRequirement"> | string + name?: Prisma.StringWithAggregatesFilter<"BountyEquipmentRequirement"> | string + level?: Prisma.EnumRequirementLevelWithAggregatesFilter<"BountyEquipmentRequirement"> | $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementCreateInput = { + id?: string + name: string + level: $Enums.RequirementLevel + bounty: Prisma.BountyCreateNestedOneWithoutEquipmentRequirementsInput +} + +export type BountyEquipmentRequirementUncheckedCreateInput = { + id?: string + bountyId: string + name: string + level: $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel + bounty?: Prisma.BountyUpdateOneRequiredWithoutEquipmentRequirementsNestedInput +} + +export type BountyEquipmentRequirementUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bountyId?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementCreateManyInput = { + id?: string + bountyId: string + name: string + level: $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bountyId?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementListRelationFilter = { + every?: Prisma.BountyEquipmentRequirementWhereInput + some?: Prisma.BountyEquipmentRequirementWhereInput + none?: Prisma.BountyEquipmentRequirementWhereInput +} + +export type BountyEquipmentRequirementOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder +} + +export type BountyEquipmentRequirementBountyIdNameCompoundUniqueInput = { + bountyId: string + name: string +} + +export type BountyEquipmentRequirementCountOrderByAggregateInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder +} + +export type BountyEquipmentRequirementMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder +} + +export type BountyEquipmentRequirementMinOrderByAggregateInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder +} + +export type BountyEquipmentRequirementCreateNestedManyWithoutBountyInput = { + create?: Prisma.XOR | Prisma.BountyEquipmentRequirementCreateWithoutBountyInput[] | Prisma.BountyEquipmentRequirementUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountyEquipmentRequirementCreateOrConnectWithoutBountyInput | Prisma.BountyEquipmentRequirementCreateOrConnectWithoutBountyInput[] + createMany?: Prisma.BountyEquipmentRequirementCreateManyBountyInputEnvelope + connect?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] +} + +export type BountyEquipmentRequirementUncheckedCreateNestedManyWithoutBountyInput = { + create?: Prisma.XOR | Prisma.BountyEquipmentRequirementCreateWithoutBountyInput[] | Prisma.BountyEquipmentRequirementUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountyEquipmentRequirementCreateOrConnectWithoutBountyInput | Prisma.BountyEquipmentRequirementCreateOrConnectWithoutBountyInput[] + createMany?: Prisma.BountyEquipmentRequirementCreateManyBountyInputEnvelope + connect?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] +} + +export type BountyEquipmentRequirementUpdateManyWithoutBountyNestedInput = { + create?: Prisma.XOR | Prisma.BountyEquipmentRequirementCreateWithoutBountyInput[] | Prisma.BountyEquipmentRequirementUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountyEquipmentRequirementCreateOrConnectWithoutBountyInput | Prisma.BountyEquipmentRequirementCreateOrConnectWithoutBountyInput[] + upsert?: Prisma.BountyEquipmentRequirementUpsertWithWhereUniqueWithoutBountyInput | Prisma.BountyEquipmentRequirementUpsertWithWhereUniqueWithoutBountyInput[] + createMany?: Prisma.BountyEquipmentRequirementCreateManyBountyInputEnvelope + set?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] + disconnect?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] + delete?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] + connect?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] + update?: Prisma.BountyEquipmentRequirementUpdateWithWhereUniqueWithoutBountyInput | Prisma.BountyEquipmentRequirementUpdateWithWhereUniqueWithoutBountyInput[] + updateMany?: Prisma.BountyEquipmentRequirementUpdateManyWithWhereWithoutBountyInput | Prisma.BountyEquipmentRequirementUpdateManyWithWhereWithoutBountyInput[] + deleteMany?: Prisma.BountyEquipmentRequirementScalarWhereInput | Prisma.BountyEquipmentRequirementScalarWhereInput[] +} + +export type BountyEquipmentRequirementUncheckedUpdateManyWithoutBountyNestedInput = { + create?: Prisma.XOR | Prisma.BountyEquipmentRequirementCreateWithoutBountyInput[] | Prisma.BountyEquipmentRequirementUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountyEquipmentRequirementCreateOrConnectWithoutBountyInput | Prisma.BountyEquipmentRequirementCreateOrConnectWithoutBountyInput[] + upsert?: Prisma.BountyEquipmentRequirementUpsertWithWhereUniqueWithoutBountyInput | Prisma.BountyEquipmentRequirementUpsertWithWhereUniqueWithoutBountyInput[] + createMany?: Prisma.BountyEquipmentRequirementCreateManyBountyInputEnvelope + set?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] + disconnect?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] + delete?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] + connect?: Prisma.BountyEquipmentRequirementWhereUniqueInput | Prisma.BountyEquipmentRequirementWhereUniqueInput[] + update?: Prisma.BountyEquipmentRequirementUpdateWithWhereUniqueWithoutBountyInput | Prisma.BountyEquipmentRequirementUpdateWithWhereUniqueWithoutBountyInput[] + updateMany?: Prisma.BountyEquipmentRequirementUpdateManyWithWhereWithoutBountyInput | Prisma.BountyEquipmentRequirementUpdateManyWithWhereWithoutBountyInput[] + deleteMany?: Prisma.BountyEquipmentRequirementScalarWhereInput | Prisma.BountyEquipmentRequirementScalarWhereInput[] +} + +export type BountyEquipmentRequirementCreateWithoutBountyInput = { + id?: string + name: string + level: $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementUncheckedCreateWithoutBountyInput = { + id?: string + name: string + level: $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementCreateOrConnectWithoutBountyInput = { + where: Prisma.BountyEquipmentRequirementWhereUniqueInput + create: Prisma.XOR +} + +export type BountyEquipmentRequirementCreateManyBountyInputEnvelope = { + data: Prisma.BountyEquipmentRequirementCreateManyBountyInput | Prisma.BountyEquipmentRequirementCreateManyBountyInput[] + skipDuplicates?: boolean +} + +export type BountyEquipmentRequirementUpsertWithWhereUniqueWithoutBountyInput = { + where: Prisma.BountyEquipmentRequirementWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type BountyEquipmentRequirementUpdateWithWhereUniqueWithoutBountyInput = { + where: Prisma.BountyEquipmentRequirementWhereUniqueInput + data: Prisma.XOR +} + +export type BountyEquipmentRequirementUpdateManyWithWhereWithoutBountyInput = { + where: Prisma.BountyEquipmentRequirementScalarWhereInput + data: Prisma.XOR +} + +export type BountyEquipmentRequirementScalarWhereInput = { + AND?: Prisma.BountyEquipmentRequirementScalarWhereInput | Prisma.BountyEquipmentRequirementScalarWhereInput[] + OR?: Prisma.BountyEquipmentRequirementScalarWhereInput[] + NOT?: Prisma.BountyEquipmentRequirementScalarWhereInput | Prisma.BountyEquipmentRequirementScalarWhereInput[] + id?: Prisma.StringFilter<"BountyEquipmentRequirement"> | string + bountyId?: Prisma.StringFilter<"BountyEquipmentRequirement"> | string + name?: Prisma.StringFilter<"BountyEquipmentRequirement"> | string + level?: Prisma.EnumRequirementLevelFilter<"BountyEquipmentRequirement"> | $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementCreateManyBountyInput = { + id?: string + name: string + level: $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementUpdateWithoutBountyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementUncheckedUpdateWithoutBountyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountyEquipmentRequirementUncheckedUpdateManyWithoutBountyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + + + +export type BountyEquipmentRequirementSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bountyId?: boolean + name?: boolean + level?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs +}, ExtArgs["result"]["bountyEquipmentRequirement"]> + +export type BountyEquipmentRequirementSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bountyId?: boolean + name?: boolean + level?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs +}, ExtArgs["result"]["bountyEquipmentRequirement"]> + +export type BountyEquipmentRequirementSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bountyId?: boolean + name?: boolean + level?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs +}, ExtArgs["result"]["bountyEquipmentRequirement"]> + +export type BountyEquipmentRequirementSelectScalar = { + id?: boolean + bountyId?: boolean + name?: boolean + level?: boolean +} + +export type BountyEquipmentRequirementOmit = runtime.Types.Extensions.GetOmit<"id" | "bountyId" | "name" | "level", ExtArgs["result"]["bountyEquipmentRequirement"]> +export type BountyEquipmentRequirementInclude = { + bounty?: boolean | Prisma.BountyDefaultArgs +} +export type BountyEquipmentRequirementIncludeCreateManyAndReturn = { + bounty?: boolean | Prisma.BountyDefaultArgs +} +export type BountyEquipmentRequirementIncludeUpdateManyAndReturn = { + bounty?: boolean | Prisma.BountyDefaultArgs +} + +export type $BountyEquipmentRequirementPayload = { + name: "BountyEquipmentRequirement" + objects: { + bounty: Prisma.$BountyPayload + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + bountyId: string + name: string + level: $Enums.RequirementLevel + }, ExtArgs["result"]["bountyEquipmentRequirement"]> + composites: {} +} + +export type BountyEquipmentRequirementGetPayload = runtime.Types.Result.GetResult + +export type BountyEquipmentRequirementCountArgs = + Omit & { + select?: BountyEquipmentRequirementCountAggregateInputType | true + } + +export interface BountyEquipmentRequirementDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['BountyEquipmentRequirement'], meta: { name: 'BountyEquipmentRequirement' } } + /** + * Find zero or one BountyEquipmentRequirement that matches the filter. + * @param {BountyEquipmentRequirementFindUniqueArgs} args - Arguments to find a BountyEquipmentRequirement + * @example + * // Get one BountyEquipmentRequirement + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__BountyEquipmentRequirementClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one BountyEquipmentRequirement that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {BountyEquipmentRequirementFindUniqueOrThrowArgs} args - Arguments to find a BountyEquipmentRequirement + * @example + * // Get one BountyEquipmentRequirement + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__BountyEquipmentRequirementClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first BountyEquipmentRequirement that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyEquipmentRequirementFindFirstArgs} args - Arguments to find a BountyEquipmentRequirement + * @example + * // Get one BountyEquipmentRequirement + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__BountyEquipmentRequirementClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first BountyEquipmentRequirement that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyEquipmentRequirementFindFirstOrThrowArgs} args - Arguments to find a BountyEquipmentRequirement + * @example + * // Get one BountyEquipmentRequirement + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__BountyEquipmentRequirementClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more BountyEquipmentRequirements that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyEquipmentRequirementFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all BountyEquipmentRequirements + * const bountyEquipmentRequirements = await prisma.bountyEquipmentRequirement.findMany() + * + * // Get first 10 BountyEquipmentRequirements + * const bountyEquipmentRequirements = await prisma.bountyEquipmentRequirement.findMany({ take: 10 }) + * + * // Only select the `id` + * const bountyEquipmentRequirementWithIdOnly = await prisma.bountyEquipmentRequirement.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a BountyEquipmentRequirement. + * @param {BountyEquipmentRequirementCreateArgs} args - Arguments to create a BountyEquipmentRequirement. + * @example + * // Create one BountyEquipmentRequirement + * const BountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.create({ + * data: { + * // ... data to create a BountyEquipmentRequirement + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__BountyEquipmentRequirementClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many BountyEquipmentRequirements. + * @param {BountyEquipmentRequirementCreateManyArgs} args - Arguments to create many BountyEquipmentRequirements. + * @example + * // Create many BountyEquipmentRequirements + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many BountyEquipmentRequirements and returns the data saved in the database. + * @param {BountyEquipmentRequirementCreateManyAndReturnArgs} args - Arguments to create many BountyEquipmentRequirements. + * @example + * // Create many BountyEquipmentRequirements + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many BountyEquipmentRequirements and only return the `id` + * const bountyEquipmentRequirementWithIdOnly = await prisma.bountyEquipmentRequirement.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a BountyEquipmentRequirement. + * @param {BountyEquipmentRequirementDeleteArgs} args - Arguments to delete one BountyEquipmentRequirement. + * @example + * // Delete one BountyEquipmentRequirement + * const BountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.delete({ + * where: { + * // ... filter to delete one BountyEquipmentRequirement + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__BountyEquipmentRequirementClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one BountyEquipmentRequirement. + * @param {BountyEquipmentRequirementUpdateArgs} args - Arguments to update one BountyEquipmentRequirement. + * @example + * // Update one BountyEquipmentRequirement + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__BountyEquipmentRequirementClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more BountyEquipmentRequirements. + * @param {BountyEquipmentRequirementDeleteManyArgs} args - Arguments to filter BountyEquipmentRequirements to delete. + * @example + * // Delete a few BountyEquipmentRequirements + * const { count } = await prisma.bountyEquipmentRequirement.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more BountyEquipmentRequirements. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyEquipmentRequirementUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many BountyEquipmentRequirements + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more BountyEquipmentRequirements and returns the data updated in the database. + * @param {BountyEquipmentRequirementUpdateManyAndReturnArgs} args - Arguments to update many BountyEquipmentRequirements. + * @example + * // Update many BountyEquipmentRequirements + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more BountyEquipmentRequirements and only return the `id` + * const bountyEquipmentRequirementWithIdOnly = await prisma.bountyEquipmentRequirement.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one BountyEquipmentRequirement. + * @param {BountyEquipmentRequirementUpsertArgs} args - Arguments to update or create a BountyEquipmentRequirement. + * @example + * // Update or create a BountyEquipmentRequirement + * const bountyEquipmentRequirement = await prisma.bountyEquipmentRequirement.upsert({ + * create: { + * // ... data to create a BountyEquipmentRequirement + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the BountyEquipmentRequirement we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__BountyEquipmentRequirementClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of BountyEquipmentRequirements. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyEquipmentRequirementCountArgs} args - Arguments to filter BountyEquipmentRequirements to count. + * @example + * // Count the number of BountyEquipmentRequirements + * const count = await prisma.bountyEquipmentRequirement.count({ + * where: { + * // ... the filter for the BountyEquipmentRequirements we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a BountyEquipmentRequirement. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyEquipmentRequirementAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by BountyEquipmentRequirement. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyEquipmentRequirementGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends BountyEquipmentRequirementGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: BountyEquipmentRequirementGroupByArgs['orderBy'] } + : { orderBy?: BountyEquipmentRequirementGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetBountyEquipmentRequirementGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the BountyEquipmentRequirement model + */ +readonly fields: BountyEquipmentRequirementFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for BountyEquipmentRequirement. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__BountyEquipmentRequirementClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + bounty = {}>(args?: Prisma.Subset>): Prisma.Prisma__BountyClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the BountyEquipmentRequirement model + */ +export interface BountyEquipmentRequirementFieldRefs { + readonly id: Prisma.FieldRef<"BountyEquipmentRequirement", 'String'> + readonly bountyId: Prisma.FieldRef<"BountyEquipmentRequirement", 'String'> + readonly name: Prisma.FieldRef<"BountyEquipmentRequirement", 'String'> + readonly level: Prisma.FieldRef<"BountyEquipmentRequirement", 'RequirementLevel'> +} + + +// Custom InputTypes +/** + * BountyEquipmentRequirement findUnique + */ +export type BountyEquipmentRequirementFindUniqueArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * Filter, which BountyEquipmentRequirement to fetch. + */ + where: Prisma.BountyEquipmentRequirementWhereUniqueInput +} + +/** + * BountyEquipmentRequirement findUniqueOrThrow + */ +export type BountyEquipmentRequirementFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * Filter, which BountyEquipmentRequirement to fetch. + */ + where: Prisma.BountyEquipmentRequirementWhereUniqueInput +} + +/** + * BountyEquipmentRequirement findFirst + */ +export type BountyEquipmentRequirementFindFirstArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * Filter, which BountyEquipmentRequirement to fetch. + */ + where?: Prisma.BountyEquipmentRequirementWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountyEquipmentRequirements to fetch. + */ + orderBy?: Prisma.BountyEquipmentRequirementOrderByWithRelationInput | Prisma.BountyEquipmentRequirementOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for BountyEquipmentRequirements. + */ + cursor?: Prisma.BountyEquipmentRequirementWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountyEquipmentRequirements from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountyEquipmentRequirements. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountyEquipmentRequirements. + */ + distinct?: Prisma.BountyEquipmentRequirementScalarFieldEnum | Prisma.BountyEquipmentRequirementScalarFieldEnum[] +} + +/** + * BountyEquipmentRequirement findFirstOrThrow + */ +export type BountyEquipmentRequirementFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * Filter, which BountyEquipmentRequirement to fetch. + */ + where?: Prisma.BountyEquipmentRequirementWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountyEquipmentRequirements to fetch. + */ + orderBy?: Prisma.BountyEquipmentRequirementOrderByWithRelationInput | Prisma.BountyEquipmentRequirementOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for BountyEquipmentRequirements. + */ + cursor?: Prisma.BountyEquipmentRequirementWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountyEquipmentRequirements from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountyEquipmentRequirements. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountyEquipmentRequirements. + */ + distinct?: Prisma.BountyEquipmentRequirementScalarFieldEnum | Prisma.BountyEquipmentRequirementScalarFieldEnum[] +} + +/** + * BountyEquipmentRequirement findMany + */ +export type BountyEquipmentRequirementFindManyArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * Filter, which BountyEquipmentRequirements to fetch. + */ + where?: Prisma.BountyEquipmentRequirementWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountyEquipmentRequirements to fetch. + */ + orderBy?: Prisma.BountyEquipmentRequirementOrderByWithRelationInput | Prisma.BountyEquipmentRequirementOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing BountyEquipmentRequirements. + */ + cursor?: Prisma.BountyEquipmentRequirementWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountyEquipmentRequirements from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountyEquipmentRequirements. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountyEquipmentRequirements. + */ + distinct?: Prisma.BountyEquipmentRequirementScalarFieldEnum | Prisma.BountyEquipmentRequirementScalarFieldEnum[] +} + +/** + * BountyEquipmentRequirement create + */ +export type BountyEquipmentRequirementCreateArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * The data needed to create a BountyEquipmentRequirement. + */ + data: Prisma.XOR +} + +/** + * BountyEquipmentRequirement createMany + */ +export type BountyEquipmentRequirementCreateManyArgs = { + /** + * The data used to create many BountyEquipmentRequirements. + */ + data: Prisma.BountyEquipmentRequirementCreateManyInput | Prisma.BountyEquipmentRequirementCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * BountyEquipmentRequirement createManyAndReturn + */ +export type BountyEquipmentRequirementCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelectCreateManyAndReturn | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * The data used to create many BountyEquipmentRequirements. + */ + data: Prisma.BountyEquipmentRequirementCreateManyInput | Prisma.BountyEquipmentRequirementCreateManyInput[] + skipDuplicates?: boolean + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementIncludeCreateManyAndReturn | null +} + +/** + * BountyEquipmentRequirement update + */ +export type BountyEquipmentRequirementUpdateArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * The data needed to update a BountyEquipmentRequirement. + */ + data: Prisma.XOR + /** + * Choose, which BountyEquipmentRequirement to update. + */ + where: Prisma.BountyEquipmentRequirementWhereUniqueInput +} + +/** + * BountyEquipmentRequirement updateMany + */ +export type BountyEquipmentRequirementUpdateManyArgs = { + /** + * The data used to update BountyEquipmentRequirements. + */ + data: Prisma.XOR + /** + * Filter which BountyEquipmentRequirements to update + */ + where?: Prisma.BountyEquipmentRequirementWhereInput + /** + * Limit how many BountyEquipmentRequirements to update. + */ + limit?: number +} + +/** + * BountyEquipmentRequirement updateManyAndReturn + */ +export type BountyEquipmentRequirementUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * The data used to update BountyEquipmentRequirements. + */ + data: Prisma.XOR + /** + * Filter which BountyEquipmentRequirements to update + */ + where?: Prisma.BountyEquipmentRequirementWhereInput + /** + * Limit how many BountyEquipmentRequirements to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementIncludeUpdateManyAndReturn | null +} + +/** + * BountyEquipmentRequirement upsert + */ +export type BountyEquipmentRequirementUpsertArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * The filter to search for the BountyEquipmentRequirement to update in case it exists. + */ + where: Prisma.BountyEquipmentRequirementWhereUniqueInput + /** + * In case the BountyEquipmentRequirement found by the `where` argument doesn't exist, create a new BountyEquipmentRequirement with this data. + */ + create: Prisma.XOR + /** + * In case the BountyEquipmentRequirement was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * BountyEquipmentRequirement delete + */ +export type BountyEquipmentRequirementDeleteArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null + /** + * Filter which BountyEquipmentRequirement to delete. + */ + where: Prisma.BountyEquipmentRequirementWhereUniqueInput +} + +/** + * BountyEquipmentRequirement deleteMany + */ +export type BountyEquipmentRequirementDeleteManyArgs = { + /** + * Filter which BountyEquipmentRequirements to delete + */ + where?: Prisma.BountyEquipmentRequirementWhereInput + /** + * Limit how many BountyEquipmentRequirements to delete. + */ + limit?: number +} + +/** + * BountyEquipmentRequirement without action + */ +export type BountyEquipmentRequirementDefaultArgs = { + /** + * Select specific fields to fetch from the BountyEquipmentRequirement + */ + select?: Prisma.BountyEquipmentRequirementSelect | null + /** + * Omit specific fields from the BountyEquipmentRequirement + */ + omit?: Prisma.BountyEquipmentRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyEquipmentRequirementInclude | null +} diff --git a/generated/prisma/models/BountySkillRequirement.ts b/generated/prisma/models/BountySkillRequirement.ts new file mode 100644 index 0000000..9f8b076 --- /dev/null +++ b/generated/prisma/models/BountySkillRequirement.ts @@ -0,0 +1,1320 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `BountySkillRequirement` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums" +import type * as Prisma from "../internal/prismaNamespace" + +/** + * Model BountySkillRequirement + * + */ +export type BountySkillRequirementModel = runtime.Types.Result.DefaultSelection + +export type AggregateBountySkillRequirement = { + _count: BountySkillRequirementCountAggregateOutputType | null + _min: BountySkillRequirementMinAggregateOutputType | null + _max: BountySkillRequirementMaxAggregateOutputType | null +} + +export type BountySkillRequirementMinAggregateOutputType = { + id: string | null + bountyId: string | null + name: string | null + level: $Enums.RequirementLevel | null +} + +export type BountySkillRequirementMaxAggregateOutputType = { + id: string | null + bountyId: string | null + name: string | null + level: $Enums.RequirementLevel | null +} + +export type BountySkillRequirementCountAggregateOutputType = { + id: number + bountyId: number + name: number + level: number + _all: number +} + + +export type BountySkillRequirementMinAggregateInputType = { + id?: true + bountyId?: true + name?: true + level?: true +} + +export type BountySkillRequirementMaxAggregateInputType = { + id?: true + bountyId?: true + name?: true + level?: true +} + +export type BountySkillRequirementCountAggregateInputType = { + id?: true + bountyId?: true + name?: true + level?: true + _all?: true +} + +export type BountySkillRequirementAggregateArgs = { + /** + * Filter which BountySkillRequirement to aggregate. + */ + where?: Prisma.BountySkillRequirementWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountySkillRequirements to fetch. + */ + orderBy?: Prisma.BountySkillRequirementOrderByWithRelationInput | Prisma.BountySkillRequirementOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.BountySkillRequirementWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountySkillRequirements from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountySkillRequirements. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned BountySkillRequirements + **/ + _count?: true | BountySkillRequirementCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: BountySkillRequirementMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: BountySkillRequirementMaxAggregateInputType +} + +export type GetBountySkillRequirementAggregateType = { + [P in keyof T & keyof AggregateBountySkillRequirement]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type BountySkillRequirementGroupByArgs = { + where?: Prisma.BountySkillRequirementWhereInput + orderBy?: Prisma.BountySkillRequirementOrderByWithAggregationInput | Prisma.BountySkillRequirementOrderByWithAggregationInput[] + by: Prisma.BountySkillRequirementScalarFieldEnum[] | Prisma.BountySkillRequirementScalarFieldEnum + having?: Prisma.BountySkillRequirementScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: BountySkillRequirementCountAggregateInputType | true + _min?: BountySkillRequirementMinAggregateInputType + _max?: BountySkillRequirementMaxAggregateInputType +} + +export type BountySkillRequirementGroupByOutputType = { + id: string + bountyId: string + name: string + level: $Enums.RequirementLevel + _count: BountySkillRequirementCountAggregateOutputType | null + _min: BountySkillRequirementMinAggregateOutputType | null + _max: BountySkillRequirementMaxAggregateOutputType | null +} + +export type GetBountySkillRequirementGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof BountySkillRequirementGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type BountySkillRequirementWhereInput = { + AND?: Prisma.BountySkillRequirementWhereInput | Prisma.BountySkillRequirementWhereInput[] + OR?: Prisma.BountySkillRequirementWhereInput[] + NOT?: Prisma.BountySkillRequirementWhereInput | Prisma.BountySkillRequirementWhereInput[] + id?: Prisma.StringFilter<"BountySkillRequirement"> | string + bountyId?: Prisma.StringFilter<"BountySkillRequirement"> | string + name?: Prisma.StringFilter<"BountySkillRequirement"> | string + level?: Prisma.EnumRequirementLevelFilter<"BountySkillRequirement"> | $Enums.RequirementLevel + bounty?: Prisma.XOR +} + +export type BountySkillRequirementOrderByWithRelationInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder + bounty?: Prisma.BountyOrderByWithRelationInput +} + +export type BountySkillRequirementWhereUniqueInput = Prisma.AtLeast<{ + id?: string + bountyId_name?: Prisma.BountySkillRequirementBountyIdNameCompoundUniqueInput + AND?: Prisma.BountySkillRequirementWhereInput | Prisma.BountySkillRequirementWhereInput[] + OR?: Prisma.BountySkillRequirementWhereInput[] + NOT?: Prisma.BountySkillRequirementWhereInput | Prisma.BountySkillRequirementWhereInput[] + bountyId?: Prisma.StringFilter<"BountySkillRequirement"> | string + name?: Prisma.StringFilter<"BountySkillRequirement"> | string + level?: Prisma.EnumRequirementLevelFilter<"BountySkillRequirement"> | $Enums.RequirementLevel + bounty?: Prisma.XOR +}, "id" | "bountyId_name"> + +export type BountySkillRequirementOrderByWithAggregationInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder + _count?: Prisma.BountySkillRequirementCountOrderByAggregateInput + _max?: Prisma.BountySkillRequirementMaxOrderByAggregateInput + _min?: Prisma.BountySkillRequirementMinOrderByAggregateInput +} + +export type BountySkillRequirementScalarWhereWithAggregatesInput = { + AND?: Prisma.BountySkillRequirementScalarWhereWithAggregatesInput | Prisma.BountySkillRequirementScalarWhereWithAggregatesInput[] + OR?: Prisma.BountySkillRequirementScalarWhereWithAggregatesInput[] + NOT?: Prisma.BountySkillRequirementScalarWhereWithAggregatesInput | Prisma.BountySkillRequirementScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"BountySkillRequirement"> | string + bountyId?: Prisma.StringWithAggregatesFilter<"BountySkillRequirement"> | string + name?: Prisma.StringWithAggregatesFilter<"BountySkillRequirement"> | string + level?: Prisma.EnumRequirementLevelWithAggregatesFilter<"BountySkillRequirement"> | $Enums.RequirementLevel +} + +export type BountySkillRequirementCreateInput = { + id?: string + name: string + level: $Enums.RequirementLevel + bounty: Prisma.BountyCreateNestedOneWithoutSkillRequirementsInput +} + +export type BountySkillRequirementUncheckedCreateInput = { + id?: string + bountyId: string + name: string + level: $Enums.RequirementLevel +} + +export type BountySkillRequirementUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel + bounty?: Prisma.BountyUpdateOneRequiredWithoutSkillRequirementsNestedInput +} + +export type BountySkillRequirementUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bountyId?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountySkillRequirementCreateManyInput = { + id?: string + bountyId: string + name: string + level: $Enums.RequirementLevel +} + +export type BountySkillRequirementUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountySkillRequirementUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bountyId?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountySkillRequirementListRelationFilter = { + every?: Prisma.BountySkillRequirementWhereInput + some?: Prisma.BountySkillRequirementWhereInput + none?: Prisma.BountySkillRequirementWhereInput +} + +export type BountySkillRequirementOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder +} + +export type BountySkillRequirementBountyIdNameCompoundUniqueInput = { + bountyId: string + name: string +} + +export type BountySkillRequirementCountOrderByAggregateInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder +} + +export type BountySkillRequirementMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder +} + +export type BountySkillRequirementMinOrderByAggregateInput = { + id?: Prisma.SortOrder + bountyId?: Prisma.SortOrder + name?: Prisma.SortOrder + level?: Prisma.SortOrder +} + +export type BountySkillRequirementCreateNestedManyWithoutBountyInput = { + create?: Prisma.XOR | Prisma.BountySkillRequirementCreateWithoutBountyInput[] | Prisma.BountySkillRequirementUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountySkillRequirementCreateOrConnectWithoutBountyInput | Prisma.BountySkillRequirementCreateOrConnectWithoutBountyInput[] + createMany?: Prisma.BountySkillRequirementCreateManyBountyInputEnvelope + connect?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] +} + +export type BountySkillRequirementUncheckedCreateNestedManyWithoutBountyInput = { + create?: Prisma.XOR | Prisma.BountySkillRequirementCreateWithoutBountyInput[] | Prisma.BountySkillRequirementUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountySkillRequirementCreateOrConnectWithoutBountyInput | Prisma.BountySkillRequirementCreateOrConnectWithoutBountyInput[] + createMany?: Prisma.BountySkillRequirementCreateManyBountyInputEnvelope + connect?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] +} + +export type BountySkillRequirementUpdateManyWithoutBountyNestedInput = { + create?: Prisma.XOR | Prisma.BountySkillRequirementCreateWithoutBountyInput[] | Prisma.BountySkillRequirementUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountySkillRequirementCreateOrConnectWithoutBountyInput | Prisma.BountySkillRequirementCreateOrConnectWithoutBountyInput[] + upsert?: Prisma.BountySkillRequirementUpsertWithWhereUniqueWithoutBountyInput | Prisma.BountySkillRequirementUpsertWithWhereUniqueWithoutBountyInput[] + createMany?: Prisma.BountySkillRequirementCreateManyBountyInputEnvelope + set?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] + disconnect?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] + delete?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] + connect?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] + update?: Prisma.BountySkillRequirementUpdateWithWhereUniqueWithoutBountyInput | Prisma.BountySkillRequirementUpdateWithWhereUniqueWithoutBountyInput[] + updateMany?: Prisma.BountySkillRequirementUpdateManyWithWhereWithoutBountyInput | Prisma.BountySkillRequirementUpdateManyWithWhereWithoutBountyInput[] + deleteMany?: Prisma.BountySkillRequirementScalarWhereInput | Prisma.BountySkillRequirementScalarWhereInput[] +} + +export type BountySkillRequirementUncheckedUpdateManyWithoutBountyNestedInput = { + create?: Prisma.XOR | Prisma.BountySkillRequirementCreateWithoutBountyInput[] | Prisma.BountySkillRequirementUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountySkillRequirementCreateOrConnectWithoutBountyInput | Prisma.BountySkillRequirementCreateOrConnectWithoutBountyInput[] + upsert?: Prisma.BountySkillRequirementUpsertWithWhereUniqueWithoutBountyInput | Prisma.BountySkillRequirementUpsertWithWhereUniqueWithoutBountyInput[] + createMany?: Prisma.BountySkillRequirementCreateManyBountyInputEnvelope + set?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] + disconnect?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] + delete?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] + connect?: Prisma.BountySkillRequirementWhereUniqueInput | Prisma.BountySkillRequirementWhereUniqueInput[] + update?: Prisma.BountySkillRequirementUpdateWithWhereUniqueWithoutBountyInput | Prisma.BountySkillRequirementUpdateWithWhereUniqueWithoutBountyInput[] + updateMany?: Prisma.BountySkillRequirementUpdateManyWithWhereWithoutBountyInput | Prisma.BountySkillRequirementUpdateManyWithWhereWithoutBountyInput[] + deleteMany?: Prisma.BountySkillRequirementScalarWhereInput | Prisma.BountySkillRequirementScalarWhereInput[] +} + +export type EnumRequirementLevelFieldUpdateOperationsInput = { + set?: $Enums.RequirementLevel +} + +export type BountySkillRequirementCreateWithoutBountyInput = { + id?: string + name: string + level: $Enums.RequirementLevel +} + +export type BountySkillRequirementUncheckedCreateWithoutBountyInput = { + id?: string + name: string + level: $Enums.RequirementLevel +} + +export type BountySkillRequirementCreateOrConnectWithoutBountyInput = { + where: Prisma.BountySkillRequirementWhereUniqueInput + create: Prisma.XOR +} + +export type BountySkillRequirementCreateManyBountyInputEnvelope = { + data: Prisma.BountySkillRequirementCreateManyBountyInput | Prisma.BountySkillRequirementCreateManyBountyInput[] + skipDuplicates?: boolean +} + +export type BountySkillRequirementUpsertWithWhereUniqueWithoutBountyInput = { + where: Prisma.BountySkillRequirementWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type BountySkillRequirementUpdateWithWhereUniqueWithoutBountyInput = { + where: Prisma.BountySkillRequirementWhereUniqueInput + data: Prisma.XOR +} + +export type BountySkillRequirementUpdateManyWithWhereWithoutBountyInput = { + where: Prisma.BountySkillRequirementScalarWhereInput + data: Prisma.XOR +} + +export type BountySkillRequirementScalarWhereInput = { + AND?: Prisma.BountySkillRequirementScalarWhereInput | Prisma.BountySkillRequirementScalarWhereInput[] + OR?: Prisma.BountySkillRequirementScalarWhereInput[] + NOT?: Prisma.BountySkillRequirementScalarWhereInput | Prisma.BountySkillRequirementScalarWhereInput[] + id?: Prisma.StringFilter<"BountySkillRequirement"> | string + bountyId?: Prisma.StringFilter<"BountySkillRequirement"> | string + name?: Prisma.StringFilter<"BountySkillRequirement"> | string + level?: Prisma.EnumRequirementLevelFilter<"BountySkillRequirement"> | $Enums.RequirementLevel +} + +export type BountySkillRequirementCreateManyBountyInput = { + id?: string + name: string + level: $Enums.RequirementLevel +} + +export type BountySkillRequirementUpdateWithoutBountyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountySkillRequirementUncheckedUpdateWithoutBountyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + +export type BountySkillRequirementUncheckedUpdateManyWithoutBountyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + level?: Prisma.EnumRequirementLevelFieldUpdateOperationsInput | $Enums.RequirementLevel +} + + + +export type BountySkillRequirementSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bountyId?: boolean + name?: boolean + level?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs +}, ExtArgs["result"]["bountySkillRequirement"]> + +export type BountySkillRequirementSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bountyId?: boolean + name?: boolean + level?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs +}, ExtArgs["result"]["bountySkillRequirement"]> + +export type BountySkillRequirementSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bountyId?: boolean + name?: boolean + level?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs +}, ExtArgs["result"]["bountySkillRequirement"]> + +export type BountySkillRequirementSelectScalar = { + id?: boolean + bountyId?: boolean + name?: boolean + level?: boolean +} + +export type BountySkillRequirementOmit = runtime.Types.Extensions.GetOmit<"id" | "bountyId" | "name" | "level", ExtArgs["result"]["bountySkillRequirement"]> +export type BountySkillRequirementInclude = { + bounty?: boolean | Prisma.BountyDefaultArgs +} +export type BountySkillRequirementIncludeCreateManyAndReturn = { + bounty?: boolean | Prisma.BountyDefaultArgs +} +export type BountySkillRequirementIncludeUpdateManyAndReturn = { + bounty?: boolean | Prisma.BountyDefaultArgs +} + +export type $BountySkillRequirementPayload = { + name: "BountySkillRequirement" + objects: { + bounty: Prisma.$BountyPayload + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + bountyId: string + name: string + level: $Enums.RequirementLevel + }, ExtArgs["result"]["bountySkillRequirement"]> + composites: {} +} + +export type BountySkillRequirementGetPayload = runtime.Types.Result.GetResult + +export type BountySkillRequirementCountArgs = + Omit & { + select?: BountySkillRequirementCountAggregateInputType | true + } + +export interface BountySkillRequirementDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['BountySkillRequirement'], meta: { name: 'BountySkillRequirement' } } + /** + * Find zero or one BountySkillRequirement that matches the filter. + * @param {BountySkillRequirementFindUniqueArgs} args - Arguments to find a BountySkillRequirement + * @example + * // Get one BountySkillRequirement + * const bountySkillRequirement = await prisma.bountySkillRequirement.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__BountySkillRequirementClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one BountySkillRequirement that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {BountySkillRequirementFindUniqueOrThrowArgs} args - Arguments to find a BountySkillRequirement + * @example + * // Get one BountySkillRequirement + * const bountySkillRequirement = await prisma.bountySkillRequirement.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__BountySkillRequirementClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first BountySkillRequirement that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountySkillRequirementFindFirstArgs} args - Arguments to find a BountySkillRequirement + * @example + * // Get one BountySkillRequirement + * const bountySkillRequirement = await prisma.bountySkillRequirement.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__BountySkillRequirementClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first BountySkillRequirement that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountySkillRequirementFindFirstOrThrowArgs} args - Arguments to find a BountySkillRequirement + * @example + * // Get one BountySkillRequirement + * const bountySkillRequirement = await prisma.bountySkillRequirement.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__BountySkillRequirementClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more BountySkillRequirements that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountySkillRequirementFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all BountySkillRequirements + * const bountySkillRequirements = await prisma.bountySkillRequirement.findMany() + * + * // Get first 10 BountySkillRequirements + * const bountySkillRequirements = await prisma.bountySkillRequirement.findMany({ take: 10 }) + * + * // Only select the `id` + * const bountySkillRequirementWithIdOnly = await prisma.bountySkillRequirement.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a BountySkillRequirement. + * @param {BountySkillRequirementCreateArgs} args - Arguments to create a BountySkillRequirement. + * @example + * // Create one BountySkillRequirement + * const BountySkillRequirement = await prisma.bountySkillRequirement.create({ + * data: { + * // ... data to create a BountySkillRequirement + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__BountySkillRequirementClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many BountySkillRequirements. + * @param {BountySkillRequirementCreateManyArgs} args - Arguments to create many BountySkillRequirements. + * @example + * // Create many BountySkillRequirements + * const bountySkillRequirement = await prisma.bountySkillRequirement.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many BountySkillRequirements and returns the data saved in the database. + * @param {BountySkillRequirementCreateManyAndReturnArgs} args - Arguments to create many BountySkillRequirements. + * @example + * // Create many BountySkillRequirements + * const bountySkillRequirement = await prisma.bountySkillRequirement.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many BountySkillRequirements and only return the `id` + * const bountySkillRequirementWithIdOnly = await prisma.bountySkillRequirement.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a BountySkillRequirement. + * @param {BountySkillRequirementDeleteArgs} args - Arguments to delete one BountySkillRequirement. + * @example + * // Delete one BountySkillRequirement + * const BountySkillRequirement = await prisma.bountySkillRequirement.delete({ + * where: { + * // ... filter to delete one BountySkillRequirement + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__BountySkillRequirementClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one BountySkillRequirement. + * @param {BountySkillRequirementUpdateArgs} args - Arguments to update one BountySkillRequirement. + * @example + * // Update one BountySkillRequirement + * const bountySkillRequirement = await prisma.bountySkillRequirement.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__BountySkillRequirementClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more BountySkillRequirements. + * @param {BountySkillRequirementDeleteManyArgs} args - Arguments to filter BountySkillRequirements to delete. + * @example + * // Delete a few BountySkillRequirements + * const { count } = await prisma.bountySkillRequirement.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more BountySkillRequirements. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountySkillRequirementUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many BountySkillRequirements + * const bountySkillRequirement = await prisma.bountySkillRequirement.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more BountySkillRequirements and returns the data updated in the database. + * @param {BountySkillRequirementUpdateManyAndReturnArgs} args - Arguments to update many BountySkillRequirements. + * @example + * // Update many BountySkillRequirements + * const bountySkillRequirement = await prisma.bountySkillRequirement.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more BountySkillRequirements and only return the `id` + * const bountySkillRequirementWithIdOnly = await prisma.bountySkillRequirement.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one BountySkillRequirement. + * @param {BountySkillRequirementUpsertArgs} args - Arguments to update or create a BountySkillRequirement. + * @example + * // Update or create a BountySkillRequirement + * const bountySkillRequirement = await prisma.bountySkillRequirement.upsert({ + * create: { + * // ... data to create a BountySkillRequirement + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the BountySkillRequirement we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__BountySkillRequirementClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of BountySkillRequirements. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountySkillRequirementCountArgs} args - Arguments to filter BountySkillRequirements to count. + * @example + * // Count the number of BountySkillRequirements + * const count = await prisma.bountySkillRequirement.count({ + * where: { + * // ... the filter for the BountySkillRequirements we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a BountySkillRequirement. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountySkillRequirementAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by BountySkillRequirement. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountySkillRequirementGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends BountySkillRequirementGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: BountySkillRequirementGroupByArgs['orderBy'] } + : { orderBy?: BountySkillRequirementGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetBountySkillRequirementGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the BountySkillRequirement model + */ +readonly fields: BountySkillRequirementFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for BountySkillRequirement. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__BountySkillRequirementClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + bounty = {}>(args?: Prisma.Subset>): Prisma.Prisma__BountyClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the BountySkillRequirement model + */ +export interface BountySkillRequirementFieldRefs { + readonly id: Prisma.FieldRef<"BountySkillRequirement", 'String'> + readonly bountyId: Prisma.FieldRef<"BountySkillRequirement", 'String'> + readonly name: Prisma.FieldRef<"BountySkillRequirement", 'String'> + readonly level: Prisma.FieldRef<"BountySkillRequirement", 'RequirementLevel'> +} + + +// Custom InputTypes +/** + * BountySkillRequirement findUnique + */ +export type BountySkillRequirementFindUniqueArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * Filter, which BountySkillRequirement to fetch. + */ + where: Prisma.BountySkillRequirementWhereUniqueInput +} + +/** + * BountySkillRequirement findUniqueOrThrow + */ +export type BountySkillRequirementFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * Filter, which BountySkillRequirement to fetch. + */ + where: Prisma.BountySkillRequirementWhereUniqueInput +} + +/** + * BountySkillRequirement findFirst + */ +export type BountySkillRequirementFindFirstArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * Filter, which BountySkillRequirement to fetch. + */ + where?: Prisma.BountySkillRequirementWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountySkillRequirements to fetch. + */ + orderBy?: Prisma.BountySkillRequirementOrderByWithRelationInput | Prisma.BountySkillRequirementOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for BountySkillRequirements. + */ + cursor?: Prisma.BountySkillRequirementWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountySkillRequirements from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountySkillRequirements. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountySkillRequirements. + */ + distinct?: Prisma.BountySkillRequirementScalarFieldEnum | Prisma.BountySkillRequirementScalarFieldEnum[] +} + +/** + * BountySkillRequirement findFirstOrThrow + */ +export type BountySkillRequirementFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * Filter, which BountySkillRequirement to fetch. + */ + where?: Prisma.BountySkillRequirementWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountySkillRequirements to fetch. + */ + orderBy?: Prisma.BountySkillRequirementOrderByWithRelationInput | Prisma.BountySkillRequirementOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for BountySkillRequirements. + */ + cursor?: Prisma.BountySkillRequirementWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountySkillRequirements from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountySkillRequirements. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountySkillRequirements. + */ + distinct?: Prisma.BountySkillRequirementScalarFieldEnum | Prisma.BountySkillRequirementScalarFieldEnum[] +} + +/** + * BountySkillRequirement findMany + */ +export type BountySkillRequirementFindManyArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * Filter, which BountySkillRequirements to fetch. + */ + where?: Prisma.BountySkillRequirementWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountySkillRequirements to fetch. + */ + orderBy?: Prisma.BountySkillRequirementOrderByWithRelationInput | Prisma.BountySkillRequirementOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing BountySkillRequirements. + */ + cursor?: Prisma.BountySkillRequirementWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountySkillRequirements from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountySkillRequirements. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountySkillRequirements. + */ + distinct?: Prisma.BountySkillRequirementScalarFieldEnum | Prisma.BountySkillRequirementScalarFieldEnum[] +} + +/** + * BountySkillRequirement create + */ +export type BountySkillRequirementCreateArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * The data needed to create a BountySkillRequirement. + */ + data: Prisma.XOR +} + +/** + * BountySkillRequirement createMany + */ +export type BountySkillRequirementCreateManyArgs = { + /** + * The data used to create many BountySkillRequirements. + */ + data: Prisma.BountySkillRequirementCreateManyInput | Prisma.BountySkillRequirementCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * BountySkillRequirement createManyAndReturn + */ +export type BountySkillRequirementCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelectCreateManyAndReturn | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * The data used to create many BountySkillRequirements. + */ + data: Prisma.BountySkillRequirementCreateManyInput | Prisma.BountySkillRequirementCreateManyInput[] + skipDuplicates?: boolean + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementIncludeCreateManyAndReturn | null +} + +/** + * BountySkillRequirement update + */ +export type BountySkillRequirementUpdateArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * The data needed to update a BountySkillRequirement. + */ + data: Prisma.XOR + /** + * Choose, which BountySkillRequirement to update. + */ + where: Prisma.BountySkillRequirementWhereUniqueInput +} + +/** + * BountySkillRequirement updateMany + */ +export type BountySkillRequirementUpdateManyArgs = { + /** + * The data used to update BountySkillRequirements. + */ + data: Prisma.XOR + /** + * Filter which BountySkillRequirements to update + */ + where?: Prisma.BountySkillRequirementWhereInput + /** + * Limit how many BountySkillRequirements to update. + */ + limit?: number +} + +/** + * BountySkillRequirement updateManyAndReturn + */ +export type BountySkillRequirementUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * The data used to update BountySkillRequirements. + */ + data: Prisma.XOR + /** + * Filter which BountySkillRequirements to update + */ + where?: Prisma.BountySkillRequirementWhereInput + /** + * Limit how many BountySkillRequirements to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementIncludeUpdateManyAndReturn | null +} + +/** + * BountySkillRequirement upsert + */ +export type BountySkillRequirementUpsertArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * The filter to search for the BountySkillRequirement to update in case it exists. + */ + where: Prisma.BountySkillRequirementWhereUniqueInput + /** + * In case the BountySkillRequirement found by the `where` argument doesn't exist, create a new BountySkillRequirement with this data. + */ + create: Prisma.XOR + /** + * In case the BountySkillRequirement was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * BountySkillRequirement delete + */ +export type BountySkillRequirementDeleteArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null + /** + * Filter which BountySkillRequirement to delete. + */ + where: Prisma.BountySkillRequirementWhereUniqueInput +} + +/** + * BountySkillRequirement deleteMany + */ +export type BountySkillRequirementDeleteManyArgs = { + /** + * Filter which BountySkillRequirements to delete + */ + where?: Prisma.BountySkillRequirementWhereInput + /** + * Limit how many BountySkillRequirements to delete. + */ + limit?: number +} + +/** + * BountySkillRequirement without action + */ +export type BountySkillRequirementDefaultArgs = { + /** + * Select specific fields to fetch from the BountySkillRequirement + */ + select?: Prisma.BountySkillRequirementSelect | null + /** + * Omit specific fields from the BountySkillRequirement + */ + omit?: Prisma.BountySkillRequirementOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountySkillRequirementInclude | null +} diff --git a/generated/prisma/models/BountyVolunteer.ts b/generated/prisma/models/BountyVolunteer.ts new file mode 100644 index 0000000..7439a0f --- /dev/null +++ b/generated/prisma/models/BountyVolunteer.ts @@ -0,0 +1,1475 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `BountyVolunteer` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums" +import type * as Prisma from "../internal/prismaNamespace" + +/** + * Model BountyVolunteer + * + */ +export type BountyVolunteerModel = runtime.Types.Result.DefaultSelection + +export type AggregateBountyVolunteer = { + _count: BountyVolunteerCountAggregateOutputType | null + _min: BountyVolunteerMinAggregateOutputType | null + _max: BountyVolunteerMaxAggregateOutputType | null +} + +export type BountyVolunteerMinAggregateOutputType = { + bountyId: string | null + volunteerId: string | null + status: $Enums.VolunteerAttendanceStatus | null + joinedAt: Date | null + withdrawnAt: Date | null +} + +export type BountyVolunteerMaxAggregateOutputType = { + bountyId: string | null + volunteerId: string | null + status: $Enums.VolunteerAttendanceStatus | null + joinedAt: Date | null + withdrawnAt: Date | null +} + +export type BountyVolunteerCountAggregateOutputType = { + bountyId: number + volunteerId: number + status: number + joinedAt: number + withdrawnAt: number + _all: number +} + + +export type BountyVolunteerMinAggregateInputType = { + bountyId?: true + volunteerId?: true + status?: true + joinedAt?: true + withdrawnAt?: true +} + +export type BountyVolunteerMaxAggregateInputType = { + bountyId?: true + volunteerId?: true + status?: true + joinedAt?: true + withdrawnAt?: true +} + +export type BountyVolunteerCountAggregateInputType = { + bountyId?: true + volunteerId?: true + status?: true + joinedAt?: true + withdrawnAt?: true + _all?: true +} + +export type BountyVolunteerAggregateArgs = { + /** + * Filter which BountyVolunteer to aggregate. + */ + where?: Prisma.BountyVolunteerWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountyVolunteers to fetch. + */ + orderBy?: Prisma.BountyVolunteerOrderByWithRelationInput | Prisma.BountyVolunteerOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.BountyVolunteerWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountyVolunteers from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountyVolunteers. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned BountyVolunteers + **/ + _count?: true | BountyVolunteerCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: BountyVolunteerMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: BountyVolunteerMaxAggregateInputType +} + +export type GetBountyVolunteerAggregateType = { + [P in keyof T & keyof AggregateBountyVolunteer]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type BountyVolunteerGroupByArgs = { + where?: Prisma.BountyVolunteerWhereInput + orderBy?: Prisma.BountyVolunteerOrderByWithAggregationInput | Prisma.BountyVolunteerOrderByWithAggregationInput[] + by: Prisma.BountyVolunteerScalarFieldEnum[] | Prisma.BountyVolunteerScalarFieldEnum + having?: Prisma.BountyVolunteerScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: BountyVolunteerCountAggregateInputType | true + _min?: BountyVolunteerMinAggregateInputType + _max?: BountyVolunteerMaxAggregateInputType +} + +export type BountyVolunteerGroupByOutputType = { + bountyId: string + volunteerId: string + status: $Enums.VolunteerAttendanceStatus + joinedAt: Date + withdrawnAt: Date | null + _count: BountyVolunteerCountAggregateOutputType | null + _min: BountyVolunteerMinAggregateOutputType | null + _max: BountyVolunteerMaxAggregateOutputType | null +} + +export type GetBountyVolunteerGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof BountyVolunteerGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type BountyVolunteerWhereInput = { + AND?: Prisma.BountyVolunteerWhereInput | Prisma.BountyVolunteerWhereInput[] + OR?: Prisma.BountyVolunteerWhereInput[] + NOT?: Prisma.BountyVolunteerWhereInput | Prisma.BountyVolunteerWhereInput[] + bountyId?: Prisma.StringFilter<"BountyVolunteer"> | string + volunteerId?: Prisma.StringFilter<"BountyVolunteer"> | string + status?: Prisma.EnumVolunteerAttendanceStatusFilter<"BountyVolunteer"> | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFilter<"BountyVolunteer"> | Date | string + withdrawnAt?: Prisma.DateTimeNullableFilter<"BountyVolunteer"> | Date | string | null + bounty?: Prisma.XOR + volunteer?: Prisma.XOR +} + +export type BountyVolunteerOrderByWithRelationInput = { + bountyId?: Prisma.SortOrder + volunteerId?: Prisma.SortOrder + status?: Prisma.SortOrder + joinedAt?: Prisma.SortOrder + withdrawnAt?: Prisma.SortOrderInput | Prisma.SortOrder + bounty?: Prisma.BountyOrderByWithRelationInput + volunteer?: Prisma.UserOrderByWithRelationInput +} + +export type BountyVolunteerWhereUniqueInput = Prisma.AtLeast<{ + bountyId_volunteerId?: Prisma.BountyVolunteerBountyIdVolunteerIdCompoundUniqueInput + AND?: Prisma.BountyVolunteerWhereInput | Prisma.BountyVolunteerWhereInput[] + OR?: Prisma.BountyVolunteerWhereInput[] + NOT?: Prisma.BountyVolunteerWhereInput | Prisma.BountyVolunteerWhereInput[] + bountyId?: Prisma.StringFilter<"BountyVolunteer"> | string + volunteerId?: Prisma.StringFilter<"BountyVolunteer"> | string + status?: Prisma.EnumVolunteerAttendanceStatusFilter<"BountyVolunteer"> | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFilter<"BountyVolunteer"> | Date | string + withdrawnAt?: Prisma.DateTimeNullableFilter<"BountyVolunteer"> | Date | string | null + bounty?: Prisma.XOR + volunteer?: Prisma.XOR +}, "bountyId_volunteerId"> + +export type BountyVolunteerOrderByWithAggregationInput = { + bountyId?: Prisma.SortOrder + volunteerId?: Prisma.SortOrder + status?: Prisma.SortOrder + joinedAt?: Prisma.SortOrder + withdrawnAt?: Prisma.SortOrderInput | Prisma.SortOrder + _count?: Prisma.BountyVolunteerCountOrderByAggregateInput + _max?: Prisma.BountyVolunteerMaxOrderByAggregateInput + _min?: Prisma.BountyVolunteerMinOrderByAggregateInput +} + +export type BountyVolunteerScalarWhereWithAggregatesInput = { + AND?: Prisma.BountyVolunteerScalarWhereWithAggregatesInput | Prisma.BountyVolunteerScalarWhereWithAggregatesInput[] + OR?: Prisma.BountyVolunteerScalarWhereWithAggregatesInput[] + NOT?: Prisma.BountyVolunteerScalarWhereWithAggregatesInput | Prisma.BountyVolunteerScalarWhereWithAggregatesInput[] + bountyId?: Prisma.StringWithAggregatesFilter<"BountyVolunteer"> | string + volunteerId?: Prisma.StringWithAggregatesFilter<"BountyVolunteer"> | string + status?: Prisma.EnumVolunteerAttendanceStatusWithAggregatesFilter<"BountyVolunteer"> | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeWithAggregatesFilter<"BountyVolunteer"> | Date | string + withdrawnAt?: Prisma.DateTimeNullableWithAggregatesFilter<"BountyVolunteer"> | Date | string | null +} + +export type BountyVolunteerCreateInput = { + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null + bounty: Prisma.BountyCreateNestedOneWithoutVolunteerAttendancesInput + volunteer: Prisma.UserCreateNestedOneWithoutVolunteerAttendancesInput +} + +export type BountyVolunteerUncheckedCreateInput = { + bountyId: string + volunteerId: string + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null +} + +export type BountyVolunteerUpdateInput = { + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bounty?: Prisma.BountyUpdateOneRequiredWithoutVolunteerAttendancesNestedInput + volunteer?: Prisma.UserUpdateOneRequiredWithoutVolunteerAttendancesNestedInput +} + +export type BountyVolunteerUncheckedUpdateInput = { + bountyId?: Prisma.StringFieldUpdateOperationsInput | string + volunteerId?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type BountyVolunteerCreateManyInput = { + bountyId: string + volunteerId: string + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null +} + +export type BountyVolunteerUpdateManyMutationInput = { + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type BountyVolunteerUncheckedUpdateManyInput = { + bountyId?: Prisma.StringFieldUpdateOperationsInput | string + volunteerId?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type BountyVolunteerListRelationFilter = { + every?: Prisma.BountyVolunteerWhereInput + some?: Prisma.BountyVolunteerWhereInput + none?: Prisma.BountyVolunteerWhereInput +} + +export type BountyVolunteerOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder +} + +export type BountyVolunteerBountyIdVolunteerIdCompoundUniqueInput = { + bountyId: string + volunteerId: string +} + +export type BountyVolunteerCountOrderByAggregateInput = { + bountyId?: Prisma.SortOrder + volunteerId?: Prisma.SortOrder + status?: Prisma.SortOrder + joinedAt?: Prisma.SortOrder + withdrawnAt?: Prisma.SortOrder +} + +export type BountyVolunteerMaxOrderByAggregateInput = { + bountyId?: Prisma.SortOrder + volunteerId?: Prisma.SortOrder + status?: Prisma.SortOrder + joinedAt?: Prisma.SortOrder + withdrawnAt?: Prisma.SortOrder +} + +export type BountyVolunteerMinOrderByAggregateInput = { + bountyId?: Prisma.SortOrder + volunteerId?: Prisma.SortOrder + status?: Prisma.SortOrder + joinedAt?: Prisma.SortOrder + withdrawnAt?: Prisma.SortOrder +} + +export type BountyVolunteerCreateNestedManyWithoutVolunteerInput = { + create?: Prisma.XOR | Prisma.BountyVolunteerCreateWithoutVolunteerInput[] | Prisma.BountyVolunteerUncheckedCreateWithoutVolunteerInput[] + connectOrCreate?: Prisma.BountyVolunteerCreateOrConnectWithoutVolunteerInput | Prisma.BountyVolunteerCreateOrConnectWithoutVolunteerInput[] + createMany?: Prisma.BountyVolunteerCreateManyVolunteerInputEnvelope + connect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] +} + +export type BountyVolunteerUncheckedCreateNestedManyWithoutVolunteerInput = { + create?: Prisma.XOR | Prisma.BountyVolunteerCreateWithoutVolunteerInput[] | Prisma.BountyVolunteerUncheckedCreateWithoutVolunteerInput[] + connectOrCreate?: Prisma.BountyVolunteerCreateOrConnectWithoutVolunteerInput | Prisma.BountyVolunteerCreateOrConnectWithoutVolunteerInput[] + createMany?: Prisma.BountyVolunteerCreateManyVolunteerInputEnvelope + connect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] +} + +export type BountyVolunteerUpdateManyWithoutVolunteerNestedInput = { + create?: Prisma.XOR | Prisma.BountyVolunteerCreateWithoutVolunteerInput[] | Prisma.BountyVolunteerUncheckedCreateWithoutVolunteerInput[] + connectOrCreate?: Prisma.BountyVolunteerCreateOrConnectWithoutVolunteerInput | Prisma.BountyVolunteerCreateOrConnectWithoutVolunteerInput[] + upsert?: Prisma.BountyVolunteerUpsertWithWhereUniqueWithoutVolunteerInput | Prisma.BountyVolunteerUpsertWithWhereUniqueWithoutVolunteerInput[] + createMany?: Prisma.BountyVolunteerCreateManyVolunteerInputEnvelope + set?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + disconnect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + delete?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + connect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + update?: Prisma.BountyVolunteerUpdateWithWhereUniqueWithoutVolunteerInput | Prisma.BountyVolunteerUpdateWithWhereUniqueWithoutVolunteerInput[] + updateMany?: Prisma.BountyVolunteerUpdateManyWithWhereWithoutVolunteerInput | Prisma.BountyVolunteerUpdateManyWithWhereWithoutVolunteerInput[] + deleteMany?: Prisma.BountyVolunteerScalarWhereInput | Prisma.BountyVolunteerScalarWhereInput[] +} + +export type BountyVolunteerUncheckedUpdateManyWithoutVolunteerNestedInput = { + create?: Prisma.XOR | Prisma.BountyVolunteerCreateWithoutVolunteerInput[] | Prisma.BountyVolunteerUncheckedCreateWithoutVolunteerInput[] + connectOrCreate?: Prisma.BountyVolunteerCreateOrConnectWithoutVolunteerInput | Prisma.BountyVolunteerCreateOrConnectWithoutVolunteerInput[] + upsert?: Prisma.BountyVolunteerUpsertWithWhereUniqueWithoutVolunteerInput | Prisma.BountyVolunteerUpsertWithWhereUniqueWithoutVolunteerInput[] + createMany?: Prisma.BountyVolunteerCreateManyVolunteerInputEnvelope + set?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + disconnect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + delete?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + connect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + update?: Prisma.BountyVolunteerUpdateWithWhereUniqueWithoutVolunteerInput | Prisma.BountyVolunteerUpdateWithWhereUniqueWithoutVolunteerInput[] + updateMany?: Prisma.BountyVolunteerUpdateManyWithWhereWithoutVolunteerInput | Prisma.BountyVolunteerUpdateManyWithWhereWithoutVolunteerInput[] + deleteMany?: Prisma.BountyVolunteerScalarWhereInput | Prisma.BountyVolunteerScalarWhereInput[] +} + +export type BountyVolunteerCreateNestedManyWithoutBountyInput = { + create?: Prisma.XOR | Prisma.BountyVolunteerCreateWithoutBountyInput[] | Prisma.BountyVolunteerUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountyVolunteerCreateOrConnectWithoutBountyInput | Prisma.BountyVolunteerCreateOrConnectWithoutBountyInput[] + createMany?: Prisma.BountyVolunteerCreateManyBountyInputEnvelope + connect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] +} + +export type BountyVolunteerUncheckedCreateNestedManyWithoutBountyInput = { + create?: Prisma.XOR | Prisma.BountyVolunteerCreateWithoutBountyInput[] | Prisma.BountyVolunteerUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountyVolunteerCreateOrConnectWithoutBountyInput | Prisma.BountyVolunteerCreateOrConnectWithoutBountyInput[] + createMany?: Prisma.BountyVolunteerCreateManyBountyInputEnvelope + connect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] +} + +export type BountyVolunteerUpdateManyWithoutBountyNestedInput = { + create?: Prisma.XOR | Prisma.BountyVolunteerCreateWithoutBountyInput[] | Prisma.BountyVolunteerUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountyVolunteerCreateOrConnectWithoutBountyInput | Prisma.BountyVolunteerCreateOrConnectWithoutBountyInput[] + upsert?: Prisma.BountyVolunteerUpsertWithWhereUniqueWithoutBountyInput | Prisma.BountyVolunteerUpsertWithWhereUniqueWithoutBountyInput[] + createMany?: Prisma.BountyVolunteerCreateManyBountyInputEnvelope + set?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + disconnect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + delete?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + connect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + update?: Prisma.BountyVolunteerUpdateWithWhereUniqueWithoutBountyInput | Prisma.BountyVolunteerUpdateWithWhereUniqueWithoutBountyInput[] + updateMany?: Prisma.BountyVolunteerUpdateManyWithWhereWithoutBountyInput | Prisma.BountyVolunteerUpdateManyWithWhereWithoutBountyInput[] + deleteMany?: Prisma.BountyVolunteerScalarWhereInput | Prisma.BountyVolunteerScalarWhereInput[] +} + +export type BountyVolunteerUncheckedUpdateManyWithoutBountyNestedInput = { + create?: Prisma.XOR | Prisma.BountyVolunteerCreateWithoutBountyInput[] | Prisma.BountyVolunteerUncheckedCreateWithoutBountyInput[] + connectOrCreate?: Prisma.BountyVolunteerCreateOrConnectWithoutBountyInput | Prisma.BountyVolunteerCreateOrConnectWithoutBountyInput[] + upsert?: Prisma.BountyVolunteerUpsertWithWhereUniqueWithoutBountyInput | Prisma.BountyVolunteerUpsertWithWhereUniqueWithoutBountyInput[] + createMany?: Prisma.BountyVolunteerCreateManyBountyInputEnvelope + set?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + disconnect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + delete?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + connect?: Prisma.BountyVolunteerWhereUniqueInput | Prisma.BountyVolunteerWhereUniqueInput[] + update?: Prisma.BountyVolunteerUpdateWithWhereUniqueWithoutBountyInput | Prisma.BountyVolunteerUpdateWithWhereUniqueWithoutBountyInput[] + updateMany?: Prisma.BountyVolunteerUpdateManyWithWhereWithoutBountyInput | Prisma.BountyVolunteerUpdateManyWithWhereWithoutBountyInput[] + deleteMany?: Prisma.BountyVolunteerScalarWhereInput | Prisma.BountyVolunteerScalarWhereInput[] +} + +export type EnumVolunteerAttendanceStatusFieldUpdateOperationsInput = { + set?: $Enums.VolunteerAttendanceStatus +} + +export type BountyVolunteerCreateWithoutVolunteerInput = { + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null + bounty: Prisma.BountyCreateNestedOneWithoutVolunteerAttendancesInput +} + +export type BountyVolunteerUncheckedCreateWithoutVolunteerInput = { + bountyId: string + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null +} + +export type BountyVolunteerCreateOrConnectWithoutVolunteerInput = { + where: Prisma.BountyVolunteerWhereUniqueInput + create: Prisma.XOR +} + +export type BountyVolunteerCreateManyVolunteerInputEnvelope = { + data: Prisma.BountyVolunteerCreateManyVolunteerInput | Prisma.BountyVolunteerCreateManyVolunteerInput[] + skipDuplicates?: boolean +} + +export type BountyVolunteerUpsertWithWhereUniqueWithoutVolunteerInput = { + where: Prisma.BountyVolunteerWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type BountyVolunteerUpdateWithWhereUniqueWithoutVolunteerInput = { + where: Prisma.BountyVolunteerWhereUniqueInput + data: Prisma.XOR +} + +export type BountyVolunteerUpdateManyWithWhereWithoutVolunteerInput = { + where: Prisma.BountyVolunteerScalarWhereInput + data: Prisma.XOR +} + +export type BountyVolunteerScalarWhereInput = { + AND?: Prisma.BountyVolunteerScalarWhereInput | Prisma.BountyVolunteerScalarWhereInput[] + OR?: Prisma.BountyVolunteerScalarWhereInput[] + NOT?: Prisma.BountyVolunteerScalarWhereInput | Prisma.BountyVolunteerScalarWhereInput[] + bountyId?: Prisma.StringFilter<"BountyVolunteer"> | string + volunteerId?: Prisma.StringFilter<"BountyVolunteer"> | string + status?: Prisma.EnumVolunteerAttendanceStatusFilter<"BountyVolunteer"> | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFilter<"BountyVolunteer"> | Date | string + withdrawnAt?: Prisma.DateTimeNullableFilter<"BountyVolunteer"> | Date | string | null +} + +export type BountyVolunteerCreateWithoutBountyInput = { + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null + volunteer: Prisma.UserCreateNestedOneWithoutVolunteerAttendancesInput +} + +export type BountyVolunteerUncheckedCreateWithoutBountyInput = { + volunteerId: string + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null +} + +export type BountyVolunteerCreateOrConnectWithoutBountyInput = { + where: Prisma.BountyVolunteerWhereUniqueInput + create: Prisma.XOR +} + +export type BountyVolunteerCreateManyBountyInputEnvelope = { + data: Prisma.BountyVolunteerCreateManyBountyInput | Prisma.BountyVolunteerCreateManyBountyInput[] + skipDuplicates?: boolean +} + +export type BountyVolunteerUpsertWithWhereUniqueWithoutBountyInput = { + where: Prisma.BountyVolunteerWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type BountyVolunteerUpdateWithWhereUniqueWithoutBountyInput = { + where: Prisma.BountyVolunteerWhereUniqueInput + data: Prisma.XOR +} + +export type BountyVolunteerUpdateManyWithWhereWithoutBountyInput = { + where: Prisma.BountyVolunteerScalarWhereInput + data: Prisma.XOR +} + +export type BountyVolunteerCreateManyVolunteerInput = { + bountyId: string + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null +} + +export type BountyVolunteerUpdateWithoutVolunteerInput = { + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + bounty?: Prisma.BountyUpdateOneRequiredWithoutVolunteerAttendancesNestedInput +} + +export type BountyVolunteerUncheckedUpdateWithoutVolunteerInput = { + bountyId?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type BountyVolunteerUncheckedUpdateManyWithoutVolunteerInput = { + bountyId?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type BountyVolunteerCreateManyBountyInput = { + volunteerId: string + status?: $Enums.VolunteerAttendanceStatus + joinedAt?: Date | string + withdrawnAt?: Date | string | null +} + +export type BountyVolunteerUpdateWithoutBountyInput = { + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + volunteer?: Prisma.UserUpdateOneRequiredWithoutVolunteerAttendancesNestedInput +} + +export type BountyVolunteerUncheckedUpdateWithoutBountyInput = { + volunteerId?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type BountyVolunteerUncheckedUpdateManyWithoutBountyInput = { + volunteerId?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumVolunteerAttendanceStatusFieldUpdateOperationsInput | $Enums.VolunteerAttendanceStatus + joinedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + withdrawnAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + + + +export type BountyVolunteerSelect = runtime.Types.Extensions.GetSelect<{ + bountyId?: boolean + volunteerId?: boolean + status?: boolean + joinedAt?: boolean + withdrawnAt?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs + volunteer?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["bountyVolunteer"]> + +export type BountyVolunteerSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + bountyId?: boolean + volunteerId?: boolean + status?: boolean + joinedAt?: boolean + withdrawnAt?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs + volunteer?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["bountyVolunteer"]> + +export type BountyVolunteerSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + bountyId?: boolean + volunteerId?: boolean + status?: boolean + joinedAt?: boolean + withdrawnAt?: boolean + bounty?: boolean | Prisma.BountyDefaultArgs + volunteer?: boolean | Prisma.UserDefaultArgs +}, ExtArgs["result"]["bountyVolunteer"]> + +export type BountyVolunteerSelectScalar = { + bountyId?: boolean + volunteerId?: boolean + status?: boolean + joinedAt?: boolean + withdrawnAt?: boolean +} + +export type BountyVolunteerOmit = runtime.Types.Extensions.GetOmit<"bountyId" | "volunteerId" | "status" | "joinedAt" | "withdrawnAt", ExtArgs["result"]["bountyVolunteer"]> +export type BountyVolunteerInclude = { + bounty?: boolean | Prisma.BountyDefaultArgs + volunteer?: boolean | Prisma.UserDefaultArgs +} +export type BountyVolunteerIncludeCreateManyAndReturn = { + bounty?: boolean | Prisma.BountyDefaultArgs + volunteer?: boolean | Prisma.UserDefaultArgs +} +export type BountyVolunteerIncludeUpdateManyAndReturn = { + bounty?: boolean | Prisma.BountyDefaultArgs + volunteer?: boolean | Prisma.UserDefaultArgs +} + +export type $BountyVolunteerPayload = { + name: "BountyVolunteer" + objects: { + bounty: Prisma.$BountyPayload + volunteer: Prisma.$UserPayload + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + bountyId: string + volunteerId: string + status: $Enums.VolunteerAttendanceStatus + joinedAt: Date + withdrawnAt: Date | null + }, ExtArgs["result"]["bountyVolunteer"]> + composites: {} +} + +export type BountyVolunteerGetPayload = runtime.Types.Result.GetResult + +export type BountyVolunteerCountArgs = + Omit & { + select?: BountyVolunteerCountAggregateInputType | true + } + +export interface BountyVolunteerDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['BountyVolunteer'], meta: { name: 'BountyVolunteer' } } + /** + * Find zero or one BountyVolunteer that matches the filter. + * @param {BountyVolunteerFindUniqueArgs} args - Arguments to find a BountyVolunteer + * @example + * // Get one BountyVolunteer + * const bountyVolunteer = await prisma.bountyVolunteer.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__BountyVolunteerClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one BountyVolunteer that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {BountyVolunteerFindUniqueOrThrowArgs} args - Arguments to find a BountyVolunteer + * @example + * // Get one BountyVolunteer + * const bountyVolunteer = await prisma.bountyVolunteer.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__BountyVolunteerClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first BountyVolunteer that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyVolunteerFindFirstArgs} args - Arguments to find a BountyVolunteer + * @example + * // Get one BountyVolunteer + * const bountyVolunteer = await prisma.bountyVolunteer.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__BountyVolunteerClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first BountyVolunteer that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyVolunteerFindFirstOrThrowArgs} args - Arguments to find a BountyVolunteer + * @example + * // Get one BountyVolunteer + * const bountyVolunteer = await prisma.bountyVolunteer.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__BountyVolunteerClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more BountyVolunteers that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyVolunteerFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all BountyVolunteers + * const bountyVolunteers = await prisma.bountyVolunteer.findMany() + * + * // Get first 10 BountyVolunteers + * const bountyVolunteers = await prisma.bountyVolunteer.findMany({ take: 10 }) + * + * // Only select the `bountyId` + * const bountyVolunteerWithBountyIdOnly = await prisma.bountyVolunteer.findMany({ select: { bountyId: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a BountyVolunteer. + * @param {BountyVolunteerCreateArgs} args - Arguments to create a BountyVolunteer. + * @example + * // Create one BountyVolunteer + * const BountyVolunteer = await prisma.bountyVolunteer.create({ + * data: { + * // ... data to create a BountyVolunteer + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__BountyVolunteerClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many BountyVolunteers. + * @param {BountyVolunteerCreateManyArgs} args - Arguments to create many BountyVolunteers. + * @example + * // Create many BountyVolunteers + * const bountyVolunteer = await prisma.bountyVolunteer.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many BountyVolunteers and returns the data saved in the database. + * @param {BountyVolunteerCreateManyAndReturnArgs} args - Arguments to create many BountyVolunteers. + * @example + * // Create many BountyVolunteers + * const bountyVolunteer = await prisma.bountyVolunteer.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many BountyVolunteers and only return the `bountyId` + * const bountyVolunteerWithBountyIdOnly = await prisma.bountyVolunteer.createManyAndReturn({ + * select: { bountyId: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a BountyVolunteer. + * @param {BountyVolunteerDeleteArgs} args - Arguments to delete one BountyVolunteer. + * @example + * // Delete one BountyVolunteer + * const BountyVolunteer = await prisma.bountyVolunteer.delete({ + * where: { + * // ... filter to delete one BountyVolunteer + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__BountyVolunteerClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one BountyVolunteer. + * @param {BountyVolunteerUpdateArgs} args - Arguments to update one BountyVolunteer. + * @example + * // Update one BountyVolunteer + * const bountyVolunteer = await prisma.bountyVolunteer.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__BountyVolunteerClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more BountyVolunteers. + * @param {BountyVolunteerDeleteManyArgs} args - Arguments to filter BountyVolunteers to delete. + * @example + * // Delete a few BountyVolunteers + * const { count } = await prisma.bountyVolunteer.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more BountyVolunteers. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyVolunteerUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many BountyVolunteers + * const bountyVolunteer = await prisma.bountyVolunteer.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more BountyVolunteers and returns the data updated in the database. + * @param {BountyVolunteerUpdateManyAndReturnArgs} args - Arguments to update many BountyVolunteers. + * @example + * // Update many BountyVolunteers + * const bountyVolunteer = await prisma.bountyVolunteer.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more BountyVolunteers and only return the `bountyId` + * const bountyVolunteerWithBountyIdOnly = await prisma.bountyVolunteer.updateManyAndReturn({ + * select: { bountyId: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one BountyVolunteer. + * @param {BountyVolunteerUpsertArgs} args - Arguments to update or create a BountyVolunteer. + * @example + * // Update or create a BountyVolunteer + * const bountyVolunteer = await prisma.bountyVolunteer.upsert({ + * create: { + * // ... data to create a BountyVolunteer + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the BountyVolunteer we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__BountyVolunteerClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of BountyVolunteers. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyVolunteerCountArgs} args - Arguments to filter BountyVolunteers to count. + * @example + * // Count the number of BountyVolunteers + * const count = await prisma.bountyVolunteer.count({ + * where: { + * // ... the filter for the BountyVolunteers we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a BountyVolunteer. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyVolunteerAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by BountyVolunteer. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {BountyVolunteerGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends BountyVolunteerGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: BountyVolunteerGroupByArgs['orderBy'] } + : { orderBy?: BountyVolunteerGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetBountyVolunteerGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the BountyVolunteer model + */ +readonly fields: BountyVolunteerFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for BountyVolunteer. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__BountyVolunteerClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + bounty = {}>(args?: Prisma.Subset>): Prisma.Prisma__BountyClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + volunteer = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the BountyVolunteer model + */ +export interface BountyVolunteerFieldRefs { + readonly bountyId: Prisma.FieldRef<"BountyVolunteer", 'String'> + readonly volunteerId: Prisma.FieldRef<"BountyVolunteer", 'String'> + readonly status: Prisma.FieldRef<"BountyVolunteer", 'VolunteerAttendanceStatus'> + readonly joinedAt: Prisma.FieldRef<"BountyVolunteer", 'DateTime'> + readonly withdrawnAt: Prisma.FieldRef<"BountyVolunteer", 'DateTime'> +} + + +// Custom InputTypes +/** + * BountyVolunteer findUnique + */ +export type BountyVolunteerFindUniqueArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * Filter, which BountyVolunteer to fetch. + */ + where: Prisma.BountyVolunteerWhereUniqueInput +} + +/** + * BountyVolunteer findUniqueOrThrow + */ +export type BountyVolunteerFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * Filter, which BountyVolunteer to fetch. + */ + where: Prisma.BountyVolunteerWhereUniqueInput +} + +/** + * BountyVolunteer findFirst + */ +export type BountyVolunteerFindFirstArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * Filter, which BountyVolunteer to fetch. + */ + where?: Prisma.BountyVolunteerWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountyVolunteers to fetch. + */ + orderBy?: Prisma.BountyVolunteerOrderByWithRelationInput | Prisma.BountyVolunteerOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for BountyVolunteers. + */ + cursor?: Prisma.BountyVolunteerWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountyVolunteers from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountyVolunteers. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountyVolunteers. + */ + distinct?: Prisma.BountyVolunteerScalarFieldEnum | Prisma.BountyVolunteerScalarFieldEnum[] +} + +/** + * BountyVolunteer findFirstOrThrow + */ +export type BountyVolunteerFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * Filter, which BountyVolunteer to fetch. + */ + where?: Prisma.BountyVolunteerWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountyVolunteers to fetch. + */ + orderBy?: Prisma.BountyVolunteerOrderByWithRelationInput | Prisma.BountyVolunteerOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for BountyVolunteers. + */ + cursor?: Prisma.BountyVolunteerWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountyVolunteers from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountyVolunteers. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountyVolunteers. + */ + distinct?: Prisma.BountyVolunteerScalarFieldEnum | Prisma.BountyVolunteerScalarFieldEnum[] +} + +/** + * BountyVolunteer findMany + */ +export type BountyVolunteerFindManyArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * Filter, which BountyVolunteers to fetch. + */ + where?: Prisma.BountyVolunteerWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of BountyVolunteers to fetch. + */ + orderBy?: Prisma.BountyVolunteerOrderByWithRelationInput | Prisma.BountyVolunteerOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing BountyVolunteers. + */ + cursor?: Prisma.BountyVolunteerWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` BountyVolunteers from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` BountyVolunteers. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of BountyVolunteers. + */ + distinct?: Prisma.BountyVolunteerScalarFieldEnum | Prisma.BountyVolunteerScalarFieldEnum[] +} + +/** + * BountyVolunteer create + */ +export type BountyVolunteerCreateArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * The data needed to create a BountyVolunteer. + */ + data: Prisma.XOR +} + +/** + * BountyVolunteer createMany + */ +export type BountyVolunteerCreateManyArgs = { + /** + * The data used to create many BountyVolunteers. + */ + data: Prisma.BountyVolunteerCreateManyInput | Prisma.BountyVolunteerCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * BountyVolunteer createManyAndReturn + */ +export type BountyVolunteerCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelectCreateManyAndReturn | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * The data used to create many BountyVolunteers. + */ + data: Prisma.BountyVolunteerCreateManyInput | Prisma.BountyVolunteerCreateManyInput[] + skipDuplicates?: boolean + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerIncludeCreateManyAndReturn | null +} + +/** + * BountyVolunteer update + */ +export type BountyVolunteerUpdateArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * The data needed to update a BountyVolunteer. + */ + data: Prisma.XOR + /** + * Choose, which BountyVolunteer to update. + */ + where: Prisma.BountyVolunteerWhereUniqueInput +} + +/** + * BountyVolunteer updateMany + */ +export type BountyVolunteerUpdateManyArgs = { + /** + * The data used to update BountyVolunteers. + */ + data: Prisma.XOR + /** + * Filter which BountyVolunteers to update + */ + where?: Prisma.BountyVolunteerWhereInput + /** + * Limit how many BountyVolunteers to update. + */ + limit?: number +} + +/** + * BountyVolunteer updateManyAndReturn + */ +export type BountyVolunteerUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * The data used to update BountyVolunteers. + */ + data: Prisma.XOR + /** + * Filter which BountyVolunteers to update + */ + where?: Prisma.BountyVolunteerWhereInput + /** + * Limit how many BountyVolunteers to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerIncludeUpdateManyAndReturn | null +} + +/** + * BountyVolunteer upsert + */ +export type BountyVolunteerUpsertArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * The filter to search for the BountyVolunteer to update in case it exists. + */ + where: Prisma.BountyVolunteerWhereUniqueInput + /** + * In case the BountyVolunteer found by the `where` argument doesn't exist, create a new BountyVolunteer with this data. + */ + create: Prisma.XOR + /** + * In case the BountyVolunteer was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * BountyVolunteer delete + */ +export type BountyVolunteerDeleteArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + /** + * Filter which BountyVolunteer to delete. + */ + where: Prisma.BountyVolunteerWhereUniqueInput +} + +/** + * BountyVolunteer deleteMany + */ +export type BountyVolunteerDeleteManyArgs = { + /** + * Filter which BountyVolunteers to delete + */ + where?: Prisma.BountyVolunteerWhereInput + /** + * Limit how many BountyVolunteers to delete. + */ + limit?: number +} + +/** + * BountyVolunteer without action + */ +export type BountyVolunteerDefaultArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null +} diff --git a/generated/prisma/models/User.ts b/generated/prisma/models/User.ts new file mode 100644 index 0000000..9fd879b --- /dev/null +++ b/generated/prisma/models/User.ts @@ -0,0 +1,1485 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `User` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums" +import type * as Prisma from "../internal/prismaNamespace" + +/** + * Model User + * + */ +export type UserModel = runtime.Types.Result.DefaultSelection + +export type AggregateUser = { + _count: UserCountAggregateOutputType | null + _min: UserMinAggregateOutputType | null + _max: UserMaxAggregateOutputType | null +} + +export type UserMinAggregateOutputType = { + id: string | null + email: string | null + displayName: string | null + passwordHash: string | null + createdAt: Date | null + updatedAt: Date | null +} + +export type UserMaxAggregateOutputType = { + id: string | null + email: string | null + displayName: string | null + passwordHash: string | null + createdAt: Date | null + updatedAt: Date | null +} + +export type UserCountAggregateOutputType = { + id: number + email: number + displayName: number + passwordHash: number + createdAt: number + updatedAt: number + _all: number +} + + +export type UserMinAggregateInputType = { + id?: true + email?: true + displayName?: true + passwordHash?: true + createdAt?: true + updatedAt?: true +} + +export type UserMaxAggregateInputType = { + id?: true + email?: true + displayName?: true + passwordHash?: true + createdAt?: true + updatedAt?: true +} + +export type UserCountAggregateInputType = { + id?: true + email?: true + displayName?: true + passwordHash?: true + createdAt?: true + updatedAt?: true + _all?: true +} + +export type UserAggregateArgs = { + /** + * Filter which User to aggregate. + */ + where?: Prisma.UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Users + **/ + _count?: true | UserCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: UserMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: UserMaxAggregateInputType +} + +export type GetUserAggregateType = { + [P in keyof T & keyof AggregateUser]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type UserGroupByArgs = { + where?: Prisma.UserWhereInput + orderBy?: Prisma.UserOrderByWithAggregationInput | Prisma.UserOrderByWithAggregationInput[] + by: Prisma.UserScalarFieldEnum[] | Prisma.UserScalarFieldEnum + having?: Prisma.UserScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: UserCountAggregateInputType | true + _min?: UserMinAggregateInputType + _max?: UserMaxAggregateInputType +} + +export type UserGroupByOutputType = { + id: string + email: string + displayName: string + passwordHash: string + createdAt: Date + updatedAt: Date + _count: UserCountAggregateOutputType | null + _min: UserMinAggregateOutputType | null + _max: UserMaxAggregateOutputType | null +} + +export type GetUserGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof UserGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type UserWhereInput = { + AND?: Prisma.UserWhereInput | Prisma.UserWhereInput[] + OR?: Prisma.UserWhereInput[] + NOT?: Prisma.UserWhereInput | Prisma.UserWhereInput[] + id?: Prisma.StringFilter<"User"> | string + email?: Prisma.StringFilter<"User"> | string + displayName?: Prisma.StringFilter<"User"> | string + passwordHash?: Prisma.StringFilter<"User"> | string + createdAt?: Prisma.DateTimeFilter<"User"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string + postedBounties?: Prisma.BountyListRelationFilter + volunteerAttendances?: Prisma.BountyVolunteerListRelationFilter +} + +export type UserOrderByWithRelationInput = { + id?: Prisma.SortOrder + email?: Prisma.SortOrder + displayName?: Prisma.SortOrder + passwordHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + postedBounties?: Prisma.BountyOrderByRelationAggregateInput + volunteerAttendances?: Prisma.BountyVolunteerOrderByRelationAggregateInput +} + +export type UserWhereUniqueInput = Prisma.AtLeast<{ + id?: string + email?: string + AND?: Prisma.UserWhereInput | Prisma.UserWhereInput[] + OR?: Prisma.UserWhereInput[] + NOT?: Prisma.UserWhereInput | Prisma.UserWhereInput[] + displayName?: Prisma.StringFilter<"User"> | string + passwordHash?: Prisma.StringFilter<"User"> | string + createdAt?: Prisma.DateTimeFilter<"User"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string + postedBounties?: Prisma.BountyListRelationFilter + volunteerAttendances?: Prisma.BountyVolunteerListRelationFilter +}, "id" | "email"> + +export type UserOrderByWithAggregationInput = { + id?: Prisma.SortOrder + email?: Prisma.SortOrder + displayName?: Prisma.SortOrder + passwordHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + _count?: Prisma.UserCountOrderByAggregateInput + _max?: Prisma.UserMaxOrderByAggregateInput + _min?: Prisma.UserMinOrderByAggregateInput +} + +export type UserScalarWhereWithAggregatesInput = { + AND?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] + OR?: Prisma.UserScalarWhereWithAggregatesInput[] + NOT?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"User"> | string + email?: Prisma.StringWithAggregatesFilter<"User"> | string + displayName?: Prisma.StringWithAggregatesFilter<"User"> | string + passwordHash?: Prisma.StringWithAggregatesFilter<"User"> | string + createdAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string + updatedAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string +} + +export type UserCreateInput = { + id?: string + email: string + displayName: string + passwordHash: string + createdAt?: Date | string + updatedAt?: Date | string + postedBounties?: Prisma.BountyCreateNestedManyWithoutPosterInput + volunteerAttendances?: Prisma.BountyVolunteerCreateNestedManyWithoutVolunteerInput +} + +export type UserUncheckedCreateInput = { + id?: string + email: string + displayName: string + passwordHash: string + createdAt?: Date | string + updatedAt?: Date | string + postedBounties?: Prisma.BountyUncheckedCreateNestedManyWithoutPosterInput + volunteerAttendances?: Prisma.BountyVolunteerUncheckedCreateNestedManyWithoutVolunteerInput +} + +export type UserUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + passwordHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + postedBounties?: Prisma.BountyUpdateManyWithoutPosterNestedInput + volunteerAttendances?: Prisma.BountyVolunteerUpdateManyWithoutVolunteerNestedInput +} + +export type UserUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + passwordHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + postedBounties?: Prisma.BountyUncheckedUpdateManyWithoutPosterNestedInput + volunteerAttendances?: Prisma.BountyVolunteerUncheckedUpdateManyWithoutVolunteerNestedInput +} + +export type UserCreateManyInput = { + id?: string + email: string + displayName: string + passwordHash: string + createdAt?: Date | string + updatedAt?: Date | string +} + +export type UserUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + passwordHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type UserUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + passwordHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type UserCountOrderByAggregateInput = { + id?: Prisma.SortOrder + email?: Prisma.SortOrder + displayName?: Prisma.SortOrder + passwordHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type UserMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + email?: Prisma.SortOrder + displayName?: Prisma.SortOrder + passwordHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type UserMinOrderByAggregateInput = { + id?: Prisma.SortOrder + email?: Prisma.SortOrder + displayName?: Prisma.SortOrder + passwordHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type UserScalarRelationFilter = { + is?: Prisma.UserWhereInput + isNot?: Prisma.UserWhereInput +} + +export type StringFieldUpdateOperationsInput = { + set?: string +} + +export type DateTimeFieldUpdateOperationsInput = { + set?: Date | string +} + +export type UserCreateNestedOneWithoutPostedBountiesInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutPostedBountiesInput + connect?: Prisma.UserWhereUniqueInput +} + +export type UserUpdateOneRequiredWithoutPostedBountiesNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutPostedBountiesInput + upsert?: Prisma.UserUpsertWithoutPostedBountiesInput + connect?: Prisma.UserWhereUniqueInput + update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutPostedBountiesInput> +} + +export type UserCreateNestedOneWithoutVolunteerAttendancesInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutVolunteerAttendancesInput + connect?: Prisma.UserWhereUniqueInput +} + +export type UserUpdateOneRequiredWithoutVolunteerAttendancesNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutVolunteerAttendancesInput + upsert?: Prisma.UserUpsertWithoutVolunteerAttendancesInput + connect?: Prisma.UserWhereUniqueInput + update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutVolunteerAttendancesInput> +} + +export type UserCreateWithoutPostedBountiesInput = { + id?: string + email: string + displayName: string + passwordHash: string + createdAt?: Date | string + updatedAt?: Date | string + volunteerAttendances?: Prisma.BountyVolunteerCreateNestedManyWithoutVolunteerInput +} + +export type UserUncheckedCreateWithoutPostedBountiesInput = { + id?: string + email: string + displayName: string + passwordHash: string + createdAt?: Date | string + updatedAt?: Date | string + volunteerAttendances?: Prisma.BountyVolunteerUncheckedCreateNestedManyWithoutVolunteerInput +} + +export type UserCreateOrConnectWithoutPostedBountiesInput = { + where: Prisma.UserWhereUniqueInput + create: Prisma.XOR +} + +export type UserUpsertWithoutPostedBountiesInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserWhereInput +} + +export type UserUpdateToOneWithWhereWithoutPostedBountiesInput = { + where?: Prisma.UserWhereInput + data: Prisma.XOR +} + +export type UserUpdateWithoutPostedBountiesInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + passwordHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + volunteerAttendances?: Prisma.BountyVolunteerUpdateManyWithoutVolunteerNestedInput +} + +export type UserUncheckedUpdateWithoutPostedBountiesInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + passwordHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + volunteerAttendances?: Prisma.BountyVolunteerUncheckedUpdateManyWithoutVolunteerNestedInput +} + +export type UserCreateWithoutVolunteerAttendancesInput = { + id?: string + email: string + displayName: string + passwordHash: string + createdAt?: Date | string + updatedAt?: Date | string + postedBounties?: Prisma.BountyCreateNestedManyWithoutPosterInput +} + +export type UserUncheckedCreateWithoutVolunteerAttendancesInput = { + id?: string + email: string + displayName: string + passwordHash: string + createdAt?: Date | string + updatedAt?: Date | string + postedBounties?: Prisma.BountyUncheckedCreateNestedManyWithoutPosterInput +} + +export type UserCreateOrConnectWithoutVolunteerAttendancesInput = { + where: Prisma.UserWhereUniqueInput + create: Prisma.XOR +} + +export type UserUpsertWithoutVolunteerAttendancesInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserWhereInput +} + +export type UserUpdateToOneWithWhereWithoutVolunteerAttendancesInput = { + where?: Prisma.UserWhereInput + data: Prisma.XOR +} + +export type UserUpdateWithoutVolunteerAttendancesInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + passwordHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + postedBounties?: Prisma.BountyUpdateManyWithoutPosterNestedInput +} + +export type UserUncheckedUpdateWithoutVolunteerAttendancesInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + displayName?: Prisma.StringFieldUpdateOperationsInput | string + passwordHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + postedBounties?: Prisma.BountyUncheckedUpdateManyWithoutPosterNestedInput +} + + +/** + * Count Type UserCountOutputType + */ + +export type UserCountOutputType = { + postedBounties: number + volunteerAttendances: number +} + +export type UserCountOutputTypeSelect = { + postedBounties?: boolean | UserCountOutputTypeCountPostedBountiesArgs + volunteerAttendances?: boolean | UserCountOutputTypeCountVolunteerAttendancesArgs +} + +/** + * UserCountOutputType without action + */ +export type UserCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the UserCountOutputType + */ + select?: Prisma.UserCountOutputTypeSelect | null +} + +/** + * UserCountOutputType without action + */ +export type UserCountOutputTypeCountPostedBountiesArgs = { + where?: Prisma.BountyWhereInput +} + +/** + * UserCountOutputType without action + */ +export type UserCountOutputTypeCountVolunteerAttendancesArgs = { + where?: Prisma.BountyVolunteerWhereInput +} + + +export type UserSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + email?: boolean + displayName?: boolean + passwordHash?: boolean + createdAt?: boolean + updatedAt?: boolean + postedBounties?: boolean | Prisma.User$postedBountiesArgs + volunteerAttendances?: boolean | Prisma.User$volunteerAttendancesArgs + _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs +}, ExtArgs["result"]["user"]> + +export type UserSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + email?: boolean + displayName?: boolean + passwordHash?: boolean + createdAt?: boolean + updatedAt?: boolean +}, ExtArgs["result"]["user"]> + +export type UserSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + email?: boolean + displayName?: boolean + passwordHash?: boolean + createdAt?: boolean + updatedAt?: boolean +}, ExtArgs["result"]["user"]> + +export type UserSelectScalar = { + id?: boolean + email?: boolean + displayName?: boolean + passwordHash?: boolean + createdAt?: boolean + updatedAt?: boolean +} + +export type UserOmit = runtime.Types.Extensions.GetOmit<"id" | "email" | "displayName" | "passwordHash" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> +export type UserInclude = { + postedBounties?: boolean | Prisma.User$postedBountiesArgs + volunteerAttendances?: boolean | Prisma.User$volunteerAttendancesArgs + _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs +} +export type UserIncludeCreateManyAndReturn = {} +export type UserIncludeUpdateManyAndReturn = {} + +export type $UserPayload = { + name: "User" + objects: { + postedBounties: Prisma.$BountyPayload[] + volunteerAttendances: Prisma.$BountyVolunteerPayload[] + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + email: string + displayName: string + passwordHash: string + createdAt: Date + updatedAt: Date + }, ExtArgs["result"]["user"]> + composites: {} +} + +export type UserGetPayload = runtime.Types.Result.GetResult + +export type UserCountArgs = + Omit & { + select?: UserCountAggregateInputType | true + } + +export interface UserDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['User'], meta: { name: 'User' } } + /** + * Find zero or one User that matches the filter. + * @param {UserFindUniqueArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one User that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {UserFindUniqueOrThrowArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first User that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindFirstArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first User that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindFirstOrThrowArgs} args - Arguments to find a User + * @example + * // Get one User + * const user = await prisma.user.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Users that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Users + * const users = await prisma.user.findMany() + * + * // Get first 10 Users + * const users = await prisma.user.findMany({ take: 10 }) + * + * // Only select the `id` + * const userWithIdOnly = await prisma.user.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a User. + * @param {UserCreateArgs} args - Arguments to create a User. + * @example + * // Create one User + * const User = await prisma.user.create({ + * data: { + * // ... data to create a User + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Users. + * @param {UserCreateManyArgs} args - Arguments to create many Users. + * @example + * // Create many Users + * const user = await prisma.user.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Users and returns the data saved in the database. + * @param {UserCreateManyAndReturnArgs} args - Arguments to create many Users. + * @example + * // Create many Users + * const user = await prisma.user.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Users and only return the `id` + * const userWithIdOnly = await prisma.user.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a User. + * @param {UserDeleteArgs} args - Arguments to delete one User. + * @example + * // Delete one User + * const User = await prisma.user.delete({ + * where: { + * // ... filter to delete one User + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one User. + * @param {UserUpdateArgs} args - Arguments to update one User. + * @example + * // Update one User + * const user = await prisma.user.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Users. + * @param {UserDeleteManyArgs} args - Arguments to filter Users to delete. + * @example + * // Delete a few Users + * const { count } = await prisma.user.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Users. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Users + * const user = await prisma.user.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Users and returns the data updated in the database. + * @param {UserUpdateManyAndReturnArgs} args - Arguments to update many Users. + * @example + * // Update many Users + * const user = await prisma.user.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Users and only return the `id` + * const userWithIdOnly = await prisma.user.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one User. + * @param {UserUpsertArgs} args - Arguments to update or create a User. + * @example + * // Update or create a User + * const user = await prisma.user.upsert({ + * create: { + * // ... data to create a User + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the User we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Users. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserCountArgs} args - Arguments to filter Users to count. + * @example + * // Count the number of Users + * const count = await prisma.user.count({ + * where: { + * // ... the filter for the Users we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a User. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by User. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {UserGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends UserGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: UserGroupByArgs['orderBy'] } + : { orderBy?: UserGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetUserGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the User model + */ +readonly fields: UserFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for User. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__UserClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + postedBounties = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + volunteerAttendances = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the User model + */ +export interface UserFieldRefs { + readonly id: Prisma.FieldRef<"User", 'String'> + readonly email: Prisma.FieldRef<"User", 'String'> + readonly displayName: Prisma.FieldRef<"User", 'String'> + readonly passwordHash: Prisma.FieldRef<"User", 'String'> + readonly createdAt: Prisma.FieldRef<"User", 'DateTime'> + readonly updatedAt: Prisma.FieldRef<"User", 'DateTime'> +} + + +// Custom InputTypes +/** + * User findUnique + */ +export type UserFindUniqueArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which User to fetch. + */ + where: Prisma.UserWhereUniqueInput +} + +/** + * User findUniqueOrThrow + */ +export type UserFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which User to fetch. + */ + where: Prisma.UserWhereUniqueInput +} + +/** + * User findFirst + */ +export type UserFindFirstArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which User to fetch. + */ + where?: Prisma.UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Users. + */ + cursor?: Prisma.UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Users. + */ + distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] +} + +/** + * User findFirstOrThrow + */ +export type UserFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which User to fetch. + */ + where?: Prisma.UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Users. + */ + cursor?: Prisma.UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Users. + */ + distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] +} + +/** + * User findMany + */ +export type UserFindManyArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter, which Users to fetch. + */ + where?: Prisma.UserWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Users to fetch. + */ + orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Users. + */ + cursor?: Prisma.UserWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Users from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` Users. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Users. + */ + distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] +} + +/** + * User create + */ +export type UserCreateArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * The data needed to create a User. + */ + data: Prisma.XOR +} + +/** + * User createMany + */ +export type UserCreateManyArgs = { + /** + * The data used to create many Users. + */ + data: Prisma.UserCreateManyInput | Prisma.UserCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * User createManyAndReturn + */ +export type UserCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelectCreateManyAndReturn | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * The data used to create many Users. + */ + data: Prisma.UserCreateManyInput | Prisma.UserCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * User update + */ +export type UserUpdateArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * The data needed to update a User. + */ + data: Prisma.XOR + /** + * Choose, which User to update. + */ + where: Prisma.UserWhereUniqueInput +} + +/** + * User updateMany + */ +export type UserUpdateManyArgs = { + /** + * The data used to update Users. + */ + data: Prisma.XOR + /** + * Filter which Users to update + */ + where?: Prisma.UserWhereInput + /** + * Limit how many Users to update. + */ + limit?: number +} + +/** + * User updateManyAndReturn + */ +export type UserUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * The data used to update Users. + */ + data: Prisma.XOR + /** + * Filter which Users to update + */ + where?: Prisma.UserWhereInput + /** + * Limit how many Users to update. + */ + limit?: number +} + +/** + * User upsert + */ +export type UserUpsertArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * The filter to search for the User to update in case it exists. + */ + where: Prisma.UserWhereUniqueInput + /** + * In case the User found by the `where` argument doesn't exist, create a new User with this data. + */ + create: Prisma.XOR + /** + * In case the User was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * User delete + */ +export type UserDeleteArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + /** + * Filter which User to delete. + */ + where: Prisma.UserWhereUniqueInput +} + +/** + * User deleteMany + */ +export type UserDeleteManyArgs = { + /** + * Filter which Users to delete + */ + where?: Prisma.UserWhereInput + /** + * Limit how many Users to delete. + */ + limit?: number +} + +/** + * User.postedBounties + */ +export type User$postedBountiesArgs = { + /** + * Select specific fields to fetch from the Bounty + */ + select?: Prisma.BountySelect | null + /** + * Omit specific fields from the Bounty + */ + omit?: Prisma.BountyOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyInclude | null + where?: Prisma.BountyWhereInput + orderBy?: Prisma.BountyOrderByWithRelationInput | Prisma.BountyOrderByWithRelationInput[] + cursor?: Prisma.BountyWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.BountyScalarFieldEnum | Prisma.BountyScalarFieldEnum[] +} + +/** + * User.volunteerAttendances + */ +export type User$volunteerAttendancesArgs = { + /** + * Select specific fields to fetch from the BountyVolunteer + */ + select?: Prisma.BountyVolunteerSelect | null + /** + * Omit specific fields from the BountyVolunteer + */ + omit?: Prisma.BountyVolunteerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.BountyVolunteerInclude | null + where?: Prisma.BountyVolunteerWhereInput + orderBy?: Prisma.BountyVolunteerOrderByWithRelationInput | Prisma.BountyVolunteerOrderByWithRelationInput[] + cursor?: Prisma.BountyVolunteerWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.BountyVolunteerScalarFieldEnum | Prisma.BountyVolunteerScalarFieldEnum[] +} + +/** + * User without action + */ +export type UserDefaultArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null +} diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..a419cbe --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,7 @@ +/// +/// +import "./.next/dev/types/routes.d.ts"; +import "./.next/dev/types/root-params.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/package.json b/package.json index b0d03c2..3dd156a 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,11 @@ "test": "vitest run --passWithNoTests", "test:integration": "vitest run --project integration --passWithNoTests", "test:e2e": "playwright test", - "coverage": "vitest run --coverage --passWithNoTests", + "coverage": "vitest run --project unit --coverage --passWithNoTests", "prisma:validate": "prisma validate", "prisma:migrate": "prisma migrate dev", "prisma:deploy": "prisma migrate deploy", + "db:seed:examples": "node --experimental-strip-types scripts/seed-example-bounties.mjs", "docker:up": "docker compose up -d postgres minio", "docker:down": "docker compose down", "test:smoke": "bash scripts/smoke.sh", diff --git a/prisma/migrations/20261014212106_add_capacity_based_bounties/migration.sql b/prisma/migrations/20261014212106_add_capacity_based_bounties/migration.sql new file mode 100644 index 0000000..fed8918 --- /dev/null +++ b/prisma/migrations/20261014212106_add_capacity_based_bounties/migration.sql @@ -0,0 +1,115 @@ +-- CreateEnum +CREATE TYPE "BountyStatus" AS ENUM ('OPEN', 'FULL', 'FINISHED', 'CANCELLED', 'EXPIRED'); + +-- CreateEnum +CREATE TYPE "RequirementLevel" AS ENUM ('REQUIRED', 'RECOMMENDED'); + +-- CreateEnum +CREATE TYPE "VolunteerAttendanceStatus" AS ENUM ('JOINED', 'WITHDRAWN'); + +-- CreateTable +CREATE TABLE "Bounty" ( + "id" TEXT NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT NOT NULL, + "locationLabel" TEXT NOT NULL, + "latitude" DECIMAL(9,6), + "longitude" DECIMAL(9,6), + "scheduledAt" TIMESTAMP(3) NOT NULL, + "deadline" TIMESTAMP(3) NOT NULL, + "minVolunteers" INTEGER NOT NULL, + "maxVolunteers" INTEGER NOT NULL, + "status" "BountyStatus" NOT NULL DEFAULT 'OPEN', + "posterId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "finishedAt" TIMESTAMP(3), + "verifiedAt" TIMESTAMP(3), + "cancellationReason" TEXT, + + CONSTRAINT "Bounty_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "BountyVolunteer" ( + "bountyId" TEXT NOT NULL, + "volunteerId" TEXT NOT NULL, + "status" "VolunteerAttendanceStatus" NOT NULL DEFAULT 'JOINED', + "joinedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "withdrawnAt" TIMESTAMP(3), + + CONSTRAINT "BountyVolunteer_pkey" PRIMARY KEY ("bountyId","volunteerId") +); + +-- CreateTable +CREATE TABLE "BountySkillRequirement" ( + "id" TEXT NOT NULL, + "bountyId" TEXT NOT NULL, + "name" TEXT NOT NULL, + "level" "RequirementLevel" NOT NULL, + + CONSTRAINT "BountySkillRequirement_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "BountyEquipmentRequirement" ( + "id" TEXT NOT NULL, + "bountyId" TEXT NOT NULL, + "name" TEXT NOT NULL, + "level" "RequirementLevel" NOT NULL, + + CONSTRAINT "BountyEquipmentRequirement_pkey" PRIMARY KEY ("id") +); + +-- Prisma Schema Language does not represent PostgreSQL CHECK constraints. +-- Keep these invariants in the database so all writers enforce them. +ALTER TABLE "Bounty" + ADD CONSTRAINT "Bounty_min_volunteers_positive" + CHECK ("minVolunteers" > 0), + ADD CONSTRAINT "Bounty_capacity_range" + CHECK ("maxVolunteers" >= "minVolunteers"), + ADD CONSTRAINT "Bounty_coordinates_paired" + CHECK (("latitude" IS NULL) = ("longitude" IS NULL)); + +ALTER TABLE "BountyVolunteer" + ADD CONSTRAINT "BountyVolunteer_withdrawal_status" + CHECK ( + ("status" = 'JOINED' AND "withdrawnAt" IS NULL) + OR ("status" = 'WITHDRAWN' AND "withdrawnAt" IS NOT NULL) + ); + +-- CreateIndex +CREATE INDEX "Bounty_posterId_idx" ON "Bounty"("posterId"); + +-- CreateIndex +CREATE INDEX "Bounty_status_deadline_idx" ON "Bounty"("status", "deadline"); + +-- CreateIndex +CREATE INDEX "Bounty_scheduledAt_idx" ON "Bounty"("scheduledAt"); + +-- CreateIndex +CREATE INDEX "BountyVolunteer_volunteerId_status_idx" ON "BountyVolunteer"("volunteerId", "status"); + +-- CreateIndex +CREATE INDEX "BountyVolunteer_bountyId_status_idx" ON "BountyVolunteer"("bountyId", "status"); + +-- CreateIndex +CREATE UNIQUE INDEX "BountySkillRequirement_bountyId_name_key" ON "BountySkillRequirement"("bountyId", "name"); + +-- CreateIndex +CREATE UNIQUE INDEX "BountyEquipmentRequirement_bountyId_name_key" ON "BountyEquipmentRequirement"("bountyId", "name"); + +-- AddForeignKey +ALTER TABLE "Bounty" ADD CONSTRAINT "Bounty_posterId_fkey" FOREIGN KEY ("posterId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BountyVolunteer" ADD CONSTRAINT "BountyVolunteer_bountyId_fkey" FOREIGN KEY ("bountyId") REFERENCES "Bounty"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BountyVolunteer" ADD CONSTRAINT "BountyVolunteer_volunteerId_fkey" FOREIGN KEY ("volunteerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BountySkillRequirement" ADD CONSTRAINT "BountySkillRequirement_bountyId_fkey" FOREIGN KEY ("bountyId") REFERENCES "Bounty"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BountyEquipmentRequirement" ADD CONSTRAINT "BountyEquipmentRequirement_bountyId_fkey" FOREIGN KEY ("bountyId") REFERENCES "Bounty"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20261018120000_replace_min_volunteers_with_pay/migration.sql b/prisma/migrations/20261018120000_replace_min_volunteers_with_pay/migration.sql new file mode 100644 index 0000000..b004c47 --- /dev/null +++ b/prisma/migrations/20261018120000_replace_min_volunteers_with_pay/migration.sql @@ -0,0 +1,13 @@ +-- Replace the minimum volunteer requirement with per-volunteer compensation. +ALTER TABLE "Bounty" + DROP CONSTRAINT "Bounty_min_volunteers_positive", + DROP CONSTRAINT "Bounty_capacity_range", + ADD COLUMN "payPerVolunteer" DECIMAL(10,2) NOT NULL DEFAULT 0.00, + DROP COLUMN "minVolunteers"; + +ALTER TABLE "Bounty" + ADD CONSTRAINT "Bounty_pay_per_volunteer_non_negative" + CHECK ("payPerVolunteer" >= 0); + +ALTER TABLE "Bounty" + ALTER COLUMN "payPerVolunteer" DROP DEFAULT; diff --git a/prisma/migrations/20261019204424_add_bounty_image_url/migration.sql b/prisma/migrations/20261019204424_add_bounty_image_url/migration.sql new file mode 100644 index 0000000..cc7770e --- /dev/null +++ b/prisma/migrations/20261019204424_add_bounty_image_url/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Bounty" ADD COLUMN "imageUrl" TEXT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1e426b2..e89e528 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -8,10 +8,93 @@ datasource db { } model User { - id String @id @default(cuid()) - email String @unique - displayName String - passwordHash String - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + id String @id @default(cuid()) + email String @unique + displayName String + passwordHash String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + postedBounties Bounty[] @relation("BountyPoster") + volunteerAttendances BountyVolunteer[] +} + +enum BountyStatus { + OPEN + FULL + FINISHED + CANCELLED + EXPIRED +} + +enum RequirementLevel { + REQUIRED + RECOMMENDED +} + +enum VolunteerAttendanceStatus { + JOINED + WITHDRAWN +} + +model Bounty { + id String @id @default(cuid()) + title String + description String + locationLabel String + imageUrl String? + latitude Decimal? @db.Decimal(9, 6) + longitude Decimal? @db.Decimal(9, 6) + scheduledAt DateTime + deadline DateTime + maxVolunteers Int + payPerVolunteer Decimal @db.Decimal(10, 2) + status BountyStatus @default(OPEN) + posterId String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + finishedAt DateTime? + verifiedAt DateTime? + cancellationReason String? + poster User @relation("BountyPoster", fields: [posterId], references: [id], onDelete: Restrict) + volunteerAttendances BountyVolunteer[] + skillRequirements BountySkillRequirement[] + equipmentRequirements BountyEquipmentRequirement[] + + @@index([posterId]) + @@index([status, deadline]) + @@index([scheduledAt]) +} + +model BountyVolunteer { + bountyId String + volunteerId String + status VolunteerAttendanceStatus @default(JOINED) + joinedAt DateTime @default(now()) + withdrawnAt DateTime? + bounty Bounty @relation(fields: [bountyId], references: [id], onDelete: Cascade) + volunteer User @relation(fields: [volunteerId], references: [id], onDelete: Cascade) + + @@id([bountyId, volunteerId]) + @@index([volunteerId, status]) + @@index([bountyId, status]) +} + +model BountySkillRequirement { + id String @id @default(cuid()) + bountyId String + name String + level RequirementLevel + bounty Bounty @relation(fields: [bountyId], references: [id], onDelete: Cascade) + + @@unique([bountyId, name]) +} + +model BountyEquipmentRequirement { + id String @id @default(cuid()) + bountyId String + name String + level RequirementLevel + bounty Bounty @relation(fields: [bountyId], references: [id], onDelete: Cascade) + + @@unique([bountyId, name]) } diff --git a/public/posts/cedar-grove-cleanup.svg b/public/posts/cedar-grove-cleanup.svg new file mode 100644 index 0000000..f832ae8 --- /dev/null +++ b/public/posts/cedar-grove-cleanup.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/public/posts/community-garden.svg b/public/posts/community-garden.svg new file mode 100644 index 0000000..6201a59 --- /dev/null +++ b/public/posts/community-garden.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/posts/food-pantry-sorting.svg b/public/posts/food-pantry-sorting.svg new file mode 100644 index 0000000..b3a84a2 --- /dev/null +++ b/public/posts/food-pantry-sorting.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/posts/trailhead-tidy.svg b/public/posts/trailhead-tidy.svg new file mode 100644 index 0000000..b5d7be5 --- /dev/null +++ b/public/posts/trailhead-tidy.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/scripts/seed-example-bounties.mjs b/scripts/seed-example-bounties.mjs new file mode 100644 index 0000000..5321e3f --- /dev/null +++ b/scripts/seed-example-bounties.mjs @@ -0,0 +1,139 @@ +import 'dotenv/config' + +import { randomUUID } from 'node:crypto' +import { Pool } from 'pg' + +import { hashPassword } from '../lib/auth/password.ts' + +const databaseUrl = process.env.DATABASE_URL + +if (!databaseUrl) { + throw new Error('DATABASE_URL is required.') +} + +const databaseHost = new URL(databaseUrl).hostname +const localDatabaseHosts = new Set([ + 'localhost', + '127.0.0.1', + '[::1]', + 'postgres', +]) + +if (!localDatabaseHosts.has(databaseHost)) { + throw new Error('Example bounties can only be seeded into a local database.') +} + +const pool = new Pool({ connectionString: databaseUrl }) +const examples = [ + { + id: 'example-cedar-grove-cleanup', + title: 'Clean up Cedar Grove', + description: 'Pick up litter and tidy the paths around Cedar Grove.', + locationLabel: 'Cedar Grove, Chico, CA', + imageUrl: '/posts/cedar-grove-cleanup.svg', + daysUntilScheduled: 7, + maxVolunteers: 8, + }, + { + id: 'example-food-pantry-sorting', + title: 'Sort food pantry donations', + description: 'Organize donated food and prepare boxes for local families.', + locationLabel: 'Downtown Chico, CA', + imageUrl: '/posts/food-pantry-sorting.svg', + daysUntilScheduled: 14, + maxVolunteers: 6, + }, + { + id: 'example-community-garden', + title: 'Water the community garden', + description: 'Help water and care for the shared neighborhood garden.', + locationLabel: 'South Chico, CA', + imageUrl: '/posts/community-garden.svg', + daysUntilScheduled: 21, + maxVolunteers: 5, + }, +] + +function scheduledDate(daysFromNow) { + const date = new Date() + date.setUTCDate(date.getUTCDate() + daysFromNow) + date.setUTCHours(17, 0, 0, 0) + return date +} + +const client = await pool.connect() + +try { + await client.query('BEGIN') + + const existingPoster = await client.query( + 'SELECT "id" FROM "User" WHERE "email" = $1', + ['examples@sidecause.local'], + ) + let posterId = existingPoster.rows[0]?.id + + if (!posterId) { + // The demo poster is not login-enabled; its random password is discarded. + const passwordHash = await hashPassword(randomUUID()) + const insertedPoster = await client.query( + `INSERT INTO "User" ( + "id", "email", "displayName", "passwordHash", "createdAt", "updatedAt" + ) VALUES ($1, $2, $3, $4, NOW(), NOW()) + ON CONFLICT ("email") DO UPDATE + SET "displayName" = EXCLUDED."displayName" + RETURNING "id"`, + [ + randomUUID(), + 'examples@sidecause.local', + 'SideCause Examples', + passwordHash, + ], + ) + posterId = insertedPoster.rows[0].id + } + + for (const example of examples) { + const scheduledAt = scheduledDate(example.daysUntilScheduled) + const deadline = new Date(scheduledAt.getTime() - 24 * 60 * 60 * 1000) + + await client.query( + `INSERT INTO "Bounty" ( + "id", "title", "description", "locationLabel", "imageUrl", + "scheduledAt", "deadline", "maxVolunteers", "payPerVolunteer", + "status", "posterId", "createdAt", "updatedAt" + ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, 0, 'OPEN', $9, NOW(), NOW()) + ON CONFLICT ("id") DO UPDATE SET + "title" = EXCLUDED."title", + "description" = EXCLUDED."description", + "locationLabel" = EXCLUDED."locationLabel", + "imageUrl" = EXCLUDED."imageUrl", + "scheduledAt" = EXCLUDED."scheduledAt", + "deadline" = EXCLUDED."deadline", + "maxVolunteers" = EXCLUDED."maxVolunteers", + "payPerVolunteer" = EXCLUDED."payPerVolunteer", + "status" = EXCLUDED."status", + "posterId" = EXCLUDED."posterId", + "updatedAt" = NOW()`, + [ + example.id, + example.title, + example.description, + example.locationLabel, + example.imageUrl, + scheduledAt, + deadline, + example.maxVolunteers, + posterId, + ], + ) + } + + await client.query('COMMIT') + process.stdout.write(`Seeded ${examples.length} example bounties.\n`) +} catch (error) { + await client.query('ROLLBACK') + throw error +} finally { + client.release() + await pool.end() +} diff --git a/tests/integration/bounty-schema.test.ts b/tests/integration/bounty-schema.test.ts new file mode 100644 index 0000000..2e2b683 --- /dev/null +++ b/tests/integration/bounty-schema.test.ts @@ -0,0 +1,160 @@ +import { randomUUID } from 'node:crypto' + +import { Client } from 'pg' +import { afterAll, beforeAll, describe, expect, it } from 'vitest' + +const databaseUrl = process.env.DATABASE_URL +const client = databaseUrl + ? new Client({ connectionString: databaseUrl }) + : null + +beforeAll(async () => { + if (!client) { + throw new Error( + 'DATABASE_URL is required for bounty schema integration tests.', + ) + } + + await client.connect() +}) + +afterAll(async () => { + await client?.end() +}) + +describe('bounty schema', () => { + it('stores scheduling, capacity, pay, attendance, and requirements relationally', async () => { + if (!client) { + throw new Error( + 'DATABASE_URL is required for bounty schema integration tests.', + ) + } + + const tables = await client.query<{ table_name: string }>( + `SELECT table_name + FROM information_schema.tables + WHERE table_schema = 'public' + AND table_name IN ( + 'Bounty', + 'BountyVolunteer', + 'BountySkillRequirement', + 'BountyEquipmentRequirement' + ) + ORDER BY table_name`, + ) + + expect(tables.rows.map((row) => row.table_name)).toEqual([ + 'Bounty', + 'BountyEquipmentRequirement', + 'BountySkillRequirement', + 'BountyVolunteer', + ]) + + const constraints = await client.query<{ conname: string }>( + `SELECT conname + FROM pg_constraint + WHERE conname IN ( + 'Bounty_pay_per_volunteer_non_negative', + 'Bounty_coordinates_paired', + 'BountyVolunteer_withdrawal_status' + ) + ORDER BY conname`, + ) + + expect(constraints.rows.map((row) => row.conname)).toEqual([ + 'BountyVolunteer_withdrawal_status', + 'Bounty_coordinates_paired', + 'Bounty_pay_per_volunteer_non_negative', + ]) + }) + + it('rejects invalid pay, coordinate, and withdrawal states', async () => { + if (!client) { + throw new Error( + 'DATABASE_URL is required for bounty schema integration tests.', + ) + } + + const posterId = `schema-test-${randomUUID()}` + const bountyId = `schema-test-${randomUUID()}` + + await client.query('BEGIN') + + try { + await client.query( + `INSERT INTO "User" ("id", "email", "displayName", "passwordHash", "updatedAt") + VALUES ($1, $2, 'Schema Test Poster', 'not-a-real-password-hash', CURRENT_TIMESTAMP)`, + [posterId, `${posterId}@example.test`], + ) + + await client.query('SAVEPOINT invalid_pay') + + await expect( + client.query( + `INSERT INTO "Bounty" ( + "id", "title", "description", "locationLabel", "scheduledAt", + "deadline", "maxVolunteers", "payPerVolunteer", "posterId", "updatedAt" + ) VALUES ( + $1, 'Invalid capacity', 'Test record', 'Test location', CURRENT_TIMESTAMP, + CURRENT_TIMESTAMP, 1, -1.00, $2, CURRENT_TIMESTAMP + )`, + [`invalid-pay-${randomUUID()}`, posterId], + ), + ).rejects.toMatchObject({ + code: '23514', + constraint: 'Bounty_pay_per_volunteer_non_negative', + }) + + await client.query('ROLLBACK TO SAVEPOINT invalid_pay') + + await client.query('SAVEPOINT invalid_coordinates') + + await expect( + client.query( + `INSERT INTO "Bounty" ( + "id", "title", "description", "locationLabel", "latitude", "scheduledAt", + "deadline", "maxVolunteers", "payPerVolunteer", "posterId", "updatedAt" + ) VALUES ( + $1, 'Invalid coordinates', 'Test record', 'Test location', 39.7285, + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 2, 0.00, $2, CURRENT_TIMESTAMP + )`, + [`invalid-coordinates-${randomUUID()}`, posterId], + ), + ).rejects.toMatchObject({ + code: '23514', + constraint: 'Bounty_coordinates_paired', + }) + + await client.query('ROLLBACK TO SAVEPOINT invalid_coordinates') + + await client.query( + `INSERT INTO "Bounty" ( + "id", "title", "description", "locationLabel", "scheduledAt", + "deadline", "maxVolunteers", "payPerVolunteer", "posterId", "updatedAt" + ) VALUES ( + $1, 'Valid task', 'Test record', 'Test location', CURRENT_TIMESTAMP, + CURRENT_TIMESTAMP, 2, 0.00, $2, CURRENT_TIMESTAMP + )`, + [bountyId, posterId], + ) + + await client.query('SAVEPOINT invalid_withdrawal') + + await expect( + client.query( + `INSERT INTO "BountyVolunteer" ( + "bountyId", "volunteerId", "status", "withdrawnAt" + ) VALUES ($1, $2, 'WITHDRAWN', NULL)`, + [bountyId, posterId], + ), + ).rejects.toMatchObject({ + code: '23514', + constraint: 'BountyVolunteer_withdrawal_status', + }) + + await client.query('ROLLBACK TO SAVEPOINT invalid_withdrawal') + } finally { + await client.query('ROLLBACK') + } + }) +}) diff --git a/tests/unit/post-data.test.ts b/tests/unit/post-data.test.ts new file mode 100644 index 0000000..dd083da --- /dev/null +++ b/tests/unit/post-data.test.ts @@ -0,0 +1,63 @@ +import { describe, expect, it } from 'vitest' + +import { + getPublicPostCards, + type PostListingSource, +} from '../../app/posts/post-data' + +describe('getPublicPostCards', () => { + it('omits full posts and returns only card-safe fields', async () => { + const source: PostListingSource = { + async listPublicPosts() { + return [ + { + id: 'open-task', + title: 'Park cleanup', + location: 'Bidwell Park', + imageUrl: '/posts/park-cleanup.svg', + maximumVolunteers: 5, + currentVolunteers: 3, + }, + { + id: 'full-task', + title: 'Food drive', + location: 'Downtown Chico', + imageUrl: null, + maximumVolunteers: 4, + currentVolunteers: 4, + }, + ] + }, + } + + await expect(getPublicPostCards(source)).resolves.toEqual([ + { + id: 'open-task', + title: 'Park cleanup', + location: 'Bidwell Park', + imageUrl: '/posts/park-cleanup.svg', + }, + ]) + }) + + it('does not pass insecure image URLs through to the page', async () => { + const source: PostListingSource = { + async listPublicPosts() { + return [ + { + id: 'task', + title: 'Park cleanup', + location: 'Bidwell Park', + imageUrl: 'http://images.example.test/park.jpg', + maximumVolunteers: 5, + currentVolunteers: 0, + }, + ] + }, + } + + await expect(getPublicPostCards(source)).resolves.toMatchObject([ + { imageUrl: null }, + ]) + }) +}) diff --git a/tests/unit/posts-list.test.tsx b/tests/unit/posts-list.test.tsx index adc2afa..a64e767 100644 --- a/tests/unit/posts-list.test.tsx +++ b/tests/unit/posts-list.test.tsx @@ -14,8 +14,14 @@ describe('PostsList', () => { id: 'park-cleanup', title: 'Park cleanup', location: 'Bidwell Park', + imageUrl: null, + }, + { + id: 'food-drive', + title: 'Food drive', + location: 'Downtown Chico', + imageUrl: null, }, - { id: 'food-drive', title: 'Food drive', location: 'Downtown Chico' }, ]} />, ) @@ -24,13 +30,16 @@ describe('PostsList', () => { expect(screen.getByText('Bidwell Park')).toBeTruthy() expect(screen.getByText('Food drive')).toBeTruthy() expect( - screen.getAllByRole('button', { name: 'View details' }), + screen.getAllByRole('button', { name: /More details/ }), ).toHaveLength(2) + expect( + screen.getAllByRole('button', { name: /More details/ })[0], + ).toHaveProperty('disabled', true) }) it('shows the empty state when no posts are available', () => { render() - expect(screen.getByText('No posts')).toBeTruthy() + expect(screen.getByText('No tasks are available right now.')).toBeTruthy() }) })