diff --git a/api-contracts/openapi/components/schemas/_index.yaml b/api-contracts/openapi/components/schemas/_index.yaml
index 58162ce9f..a3b23c29b 100644
--- a/api-contracts/openapi/components/schemas/_index.yaml
+++ b/api-contracts/openapi/components/schemas/_index.yaml
@@ -234,6 +234,12 @@ WorkflowMetrics:
$ref: "./workflow.yaml#/WorkflowMetrics"
WebhookWorker:
$ref: "./webhook_worker.yaml#/WebhookWorker"
+WebhookWorkerRequestMethod:
+ $ref: "./webhook_worker.yaml#/WebhookWorkerRequestMethod"
+WebhookWorkerRequest:
+ $ref: "./webhook_worker.yaml#/WebhookWorkerRequest"
+WebhookWorkerRequestListResponse:
+ $ref: "./webhook_worker.yaml#/WebhookWorkerRequestListResponse"
WebhookWorkerCreated:
$ref: "./webhook_worker.yaml#/WebhookWorkerCreated"
WebhookWorkerCreateRequest:
diff --git a/api-contracts/openapi/components/schemas/webhook_worker.yaml b/api-contracts/openapi/components/schemas/webhook_worker.yaml
index 89b20dfac..0f4ca5297 100644
--- a/api-contracts/openapi/components/schemas/webhook_worker.yaml
+++ b/api-contracts/openapi/components/schemas/webhook_worker.yaml
@@ -14,6 +14,39 @@ WebhookWorker:
- url
type: object
+WebhookWorkerRequestMethod:
+ enum:
+ - GET
+ - POST
+ - PUT
+
+WebhookWorkerRequest:
+ properties:
+ created_at:
+ type: string
+ format: date-time
+ description: The date and time the request was created.
+ method:
+ $ref: "#/WebhookWorkerRequestMethod"
+ description: The HTTP method used for the request.
+ statusCode:
+ type: integer
+ description: The HTTP status code of the response.
+ required:
+ - created_at
+ - method
+ - statusCode
+ type: object
+
+WebhookWorkerRequestListResponse:
+ properties:
+ requests:
+ type: array
+ items:
+ $ref: "#/WebhookWorkerRequest"
+ description: The list of webhook requests.
+ type: object
+
WebhookWorkerCreated:
properties:
metadata:
diff --git a/api-contracts/openapi/components/schemas/worker.yaml b/api-contracts/openapi/components/schemas/worker.yaml
index 51ef95c5a..b2844457a 100644
--- a/api-contracts/openapi/components/schemas/worker.yaml
+++ b/api-contracts/openapi/components/schemas/worker.yaml
@@ -140,6 +140,10 @@ Worker:
webhookUrl:
type: string
description: The webhook URL for the worker.
+ webhookId:
+ type: string
+ description: The webhook ID for the worker.
+ format: uuid
required:
- metadata
- name
diff --git a/api-contracts/openapi/openapi.yaml b/api-contracts/openapi/openapi.yaml
index 261df8d7d..e0f47d09a 100644
--- a/api-contracts/openapi/openapi.yaml
+++ b/api-contracts/openapi/openapi.yaml
@@ -148,5 +148,7 @@ paths:
$ref: "./paths/webhook-worker/webhook-worker.yaml#/webhookworkers"
/api/v1/webhook-workers/{webhook}:
$ref: "./paths/webhook-worker/webhook-worker.yaml#/webhookworker"
+ /api/v1/webhook-workers/{webhook}/requests:
+ $ref: "./paths/webhook-worker/webhook-worker.yaml#/webhookworkerRequests"
/api/v1/workflow-runs/{workflow-run}/input:
$ref: "./paths/workflow-run/workflow-run.yaml#/getWorkflowRunInput"
diff --git a/api-contracts/openapi/paths/webhook-worker/webhook-worker.yaml b/api-contracts/openapi/paths/webhook-worker/webhook-worker.yaml
index f763a2607..b9bcbcaaf 100644
--- a/api-contracts/openapi/paths/webhook-worker/webhook-worker.yaml
+++ b/api-contracts/openapi/paths/webhook-worker/webhook-worker.yaml
@@ -121,3 +121,45 @@ webhookworker:
schema:
$ref: "../../components/schemas/_index.yaml#/APIErrors"
description: Method not allowed
+
+webhookworkerRequests:
+ get:
+ description: Lists all requests for a webhook
+ summary: List webhook requests
+ operationId: webhook-requests:list
+ x-resources: ["tenant", "webhook"]
+ parameters:
+ - description: The webhook id
+ in: path
+ name: webhook
+ required: true
+ schema:
+ type: string
+ format: uuid
+ minLength: 36
+ maxLength: 36
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "../../components/schemas/_index.yaml#/WebhookWorkerRequestListResponse"
+ description: The list of webhook requests
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "../../components/schemas/_index.yaml#/APIErrors"
+ description: A malformed or bad request
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: "../../components/schemas/_index.yaml#/APIErrors"
+ description: Unauthorized
+ "405":
+ content:
+ application/json:
+ schema:
+ $ref: "../../components/schemas/_index.yaml#/APIErrors"
+ description: Method not allowed
diff --git a/api/v1/server/handlers/webhook-worker/create.go b/api/v1/server/handlers/webhook-worker/create.go
index 973fc8134..d51b51d5e 100644
--- a/api/v1/server/handlers/webhook-worker/create.go
+++ b/api/v1/server/handlers/webhook-worker/create.go
@@ -1,8 +1,11 @@
package webhookworker
import (
+ "errors"
+
"github.com/labstack/echo/v4"
+ "github.com/hatchet-dev/hatchet/api/v1/server/oas/apierrors"
"github.com/hatchet-dev/hatchet/api/v1/server/oas/gen"
"github.com/hatchet-dev/hatchet/api/v1/server/oas/transformers"
"github.com/hatchet-dev/hatchet/pkg/random"
@@ -29,13 +32,20 @@ func (i *WebhookWorkersService) WebhookCreate(ctx echo.Context, request gen.Webh
return nil, err
}
- ww, err := i.config.EngineRepository.WebhookWorker().UpsertWebhookWorker(ctx.Request().Context(), &repository.UpsertWebhookWorkerOpts{
+ ww, err := i.config.EngineRepository.WebhookWorker().CreateWebhookWorker(ctx.Request().Context(), &repository.CreateWebhookWorkerOpts{
TenantId: tenant.ID,
Name: request.Body.Name,
URL: request.Body.Url,
Secret: encSecret,
Deleted: repository.BoolPtr(false),
})
+
+ if errors.Is(err, repository.ErrDuplicateKey) {
+ return gen.WebhookCreate400JSONResponse(
+ apierrors.NewAPIErrors("A webhook with the same url already exists, please delete it and try again.", "url"),
+ ), nil
+ }
+
if err != nil {
return nil, err
}
diff --git a/api/v1/server/handlers/webhook-worker/delete.go b/api/v1/server/handlers/webhook-worker/delete.go
index 3f52f5c23..74bc08817 100644
--- a/api/v1/server/handlers/webhook-worker/delete.go
+++ b/api/v1/server/handlers/webhook-worker/delete.go
@@ -11,7 +11,7 @@ func (i *WebhookWorkersService) WebhookDelete(ctx echo.Context, request gen.Webh
tenant := ctx.Get("tenant").(*db.TenantModel)
webhook := ctx.Get("webhook").(*db.WebhookWorkerModel)
- err := i.config.EngineRepository.WebhookWorker().DeleteWebhookWorker(ctx.Request().Context(), webhook.ID, tenant.ID)
+ err := i.config.EngineRepository.WebhookWorker().SoftDeleteWebhookWorker(ctx.Request().Context(), webhook.ID, tenant.ID)
if err != nil {
return nil, err
}
diff --git a/api/v1/server/handlers/webhook-worker/list_requests.go b/api/v1/server/handlers/webhook-worker/list_requests.go
new file mode 100644
index 000000000..a46574b33
--- /dev/null
+++ b/api/v1/server/handlers/webhook-worker/list_requests.go
@@ -0,0 +1,34 @@
+package webhookworker
+
+import (
+ "context"
+ "time"
+
+ "github.com/labstack/echo/v4"
+
+ "github.com/hatchet-dev/hatchet/api/v1/server/oas/gen"
+ "github.com/hatchet-dev/hatchet/api/v1/server/oas/transformers"
+)
+
+func (i *WebhookWorkersService) WebhookRequestsList(ctx echo.Context, request gen.WebhookRequestsListRequestObject) (gen.WebhookRequestsListResponseObject, error) {
+ dbCtx, cancel := context.WithTimeout(ctx.Request().Context(), 30*time.Second)
+ defer cancel()
+
+ requests, err := i.config.EngineRepository.WebhookWorker().ListWebhookWorkerRequests(dbCtx, request.Webhook.String())
+
+ if err != nil {
+ return nil, err
+ }
+
+ rows := make([]gen.WebhookWorkerRequest, len(requests))
+
+ for i := range requests {
+ rows[i] = *transformers.ToWebhookWorkerRequest(requests[i])
+ }
+
+ return gen.WebhookRequestsList200JSONResponse(
+ gen.WebhookWorkerRequestListResponse{
+ Requests: &rows,
+ },
+ ), nil
+}
diff --git a/api/v1/server/handlers/workers/get.go b/api/v1/server/handlers/workers/get.go
index f1e73a55d..9e76c0924 100644
--- a/api/v1/server/handlers/workers/get.go
+++ b/api/v1/server/handlers/workers/get.go
@@ -27,6 +27,15 @@ func (t *WorkerService) WorkerGet(ctx echo.Context, request gen.WorkerGetRequest
return nil, err
}
+ actions, err := t.config.APIRepository.Worker().GetWorkerActionsByWorkerId(
+ sqlchelpers.UUIDToStr(worker.Worker.TenantId),
+ sqlchelpers.UUIDToStr(worker.Worker.ID),
+ )
+
+ if err != nil {
+ return nil, err
+ }
+
respStepRuns := make([]gen.RecentStepRuns, len(recent))
for i := range recent {
@@ -39,7 +48,9 @@ func (t *WorkerService) WorkerGet(ctx echo.Context, request gen.WorkerGetRequest
respStepRuns[i] = *genStepRun
}
- workerResp := *transformers.ToWorkerSqlc(&worker.Worker, nil, &worker.WebhookUrl.String)
+ slots := int(worker.FilledSlots)
+
+ workerResp := *transformers.ToWorkerSqlc(&worker.Worker, &slots, &worker.WebhookUrl.String, actions)
workerResp.RecentStepRuns = &respStepRuns
workerResp.Slots = transformers.ToSlotState(slotState)
diff --git a/api/v1/server/handlers/workers/list.go b/api/v1/server/handlers/workers/list.go
index 69606a7e2..d067b1a10 100644
--- a/api/v1/server/handlers/workers/list.go
+++ b/api/v1/server/handlers/workers/list.go
@@ -30,7 +30,7 @@ func (t *WorkerService) WorkerList(ctx echo.Context, request gen.WorkerListReque
workerCp := worker
slots := int(worker.Slots)
- rows[i] = *transformers.ToWorkerSqlc(&workerCp.Worker, &slots, &workerCp.WebhookUrl.String)
+ rows[i] = *transformers.ToWorkerSqlc(&workerCp.Worker, &slots, &workerCp.WebhookUrl.String, nil)
}
return gen.WorkerList200JSONResponse(
diff --git a/api/v1/server/handlers/workers/update.go b/api/v1/server/handlers/workers/update.go
index 03c056886..e82c17e61 100644
--- a/api/v1/server/handlers/workers/update.go
+++ b/api/v1/server/handlers/workers/update.go
@@ -35,5 +35,5 @@ func (t *WorkerService) WorkerUpdate(ctx echo.Context, request gen.WorkerUpdateR
return nil, err
}
- return gen.WorkerUpdate200JSONResponse(*transformers.ToWorkerSqlc(updatedWorker, nil, nil)), nil
+ return gen.WorkerUpdate200JSONResponse(*transformers.ToWorkerSqlc(updatedWorker, nil, nil, nil)), nil
}
diff --git a/api/v1/server/oas/gen/openapi.gen.go b/api/v1/server/oas/gen/openapi.gen.go
index 0cb713fd7..2facb6709 100644
--- a/api/v1/server/oas/gen/openapi.gen.go
+++ b/api/v1/server/oas/gen/openapi.gen.go
@@ -966,6 +966,25 @@ type WebhookWorkerListResponse struct {
Rows *[]WebhookWorker `json:"rows,omitempty"`
}
+// WebhookWorkerRequest defines model for WebhookWorkerRequest.
+type WebhookWorkerRequest struct {
+ // CreatedAt The date and time the request was created.
+ CreatedAt time.Time `json:"created_at"`
+ Method WebhookWorkerRequestMethod `json:"method"`
+
+ // StatusCode The HTTP status code of the response.
+ StatusCode int `json:"statusCode"`
+}
+
+// WebhookWorkerRequestListResponse defines model for WebhookWorkerRequestListResponse.
+type WebhookWorkerRequestListResponse struct {
+ // Requests The list of webhook requests.
+ Requests *[]WebhookWorkerRequest `json:"requests,omitempty"`
+}
+
+// WebhookWorkerRequestMethod defines model for WebhookWorkerRequestMethod.
+type WebhookWorkerRequestMethod = interface{}
+
// Worker defines model for Worker.
type Worker struct {
// Actions The actions this worker can perform.
@@ -1003,6 +1022,9 @@ type Worker struct {
Status *WorkerStatus `json:"status,omitempty"`
Type WorkerType `json:"type"`
+ // WebhookId The webhook ID for the worker.
+ WebhookId *openapi_types.UUID `json:"webhookId,omitempty"`
+
// WebhookUrl The webhook URL for the worker.
WebhookUrl *string `json:"webhookUrl,omitempty"`
}
@@ -1655,6 +1677,9 @@ type ServerInterface interface {
// Delete a webhook
// (DELETE /api/v1/webhook-workers/{webhook})
WebhookDelete(ctx echo.Context, webhook openapi_types.UUID) error
+ // List webhook requests
+ // (GET /api/v1/webhook-workers/{webhook}/requests)
+ WebhookRequestsList(ctx echo.Context, webhook openapi_types.UUID) error
// Get worker
// (GET /api/v1/workers/{worker})
WorkerGet(ctx echo.Context, worker openapi_types.UUID, params WorkerGetParams) error
@@ -3184,6 +3209,26 @@ func (w *ServerInterfaceWrapper) WebhookDelete(ctx echo.Context) error {
return err
}
+// WebhookRequestsList converts echo context to params.
+func (w *ServerInterfaceWrapper) WebhookRequestsList(ctx echo.Context) error {
+ var err error
+ // ------------- Path parameter "webhook" -------------
+ var webhook openapi_types.UUID
+
+ err = runtime.BindStyledParameterWithLocation("simple", false, "webhook", runtime.ParamLocationPath, ctx.Param("webhook"), &webhook)
+ if err != nil {
+ return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter webhook: %s", err))
+ }
+
+ ctx.Set(BearerAuthScopes, []string{})
+
+ ctx.Set(CookieAuthScopes, []string{})
+
+ // Invoke the callback with all the unmarshaled arguments
+ err = w.Handler.WebhookRequestsList(ctx, webhook)
+ return err
+}
+
// WorkerGet converts echo context to params.
func (w *ServerInterfaceWrapper) WorkerGet(ctx echo.Context) error {
var err error
@@ -3510,6 +3555,7 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
router.POST(baseURL+"/api/v1/users/register", wrapper.UserCreate)
router.GET(baseURL+"/api/v1/users/slack/callback", wrapper.UserUpdateSlackOauthCallback)
router.DELETE(baseURL+"/api/v1/webhook-workers/:webhook", wrapper.WebhookDelete)
+ router.GET(baseURL+"/api/v1/webhook-workers/:webhook/requests", wrapper.WebhookRequestsList)
router.GET(baseURL+"/api/v1/workers/:worker", wrapper.WorkerGet)
router.PATCH(baseURL+"/api/v1/workers/:worker", wrapper.WorkerUpdate)
router.GET(baseURL+"/api/v1/workflow-runs/:workflow-run/input", wrapper.WorkflowRunGetInput)
@@ -5903,6 +5949,50 @@ func (response WebhookDelete405JSONResponse) VisitWebhookDeleteResponse(w http.R
return json.NewEncoder(w).Encode(response)
}
+type WebhookRequestsListRequestObject struct {
+ Webhook openapi_types.UUID `json:"webhook"`
+}
+
+type WebhookRequestsListResponseObject interface {
+ VisitWebhookRequestsListResponse(w http.ResponseWriter) error
+}
+
+type WebhookRequestsList200JSONResponse WebhookWorkerRequestListResponse
+
+func (response WebhookRequestsList200JSONResponse) VisitWebhookRequestsListResponse(w http.ResponseWriter) error {
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(200)
+
+ return json.NewEncoder(w).Encode(response)
+}
+
+type WebhookRequestsList400JSONResponse APIErrors
+
+func (response WebhookRequestsList400JSONResponse) VisitWebhookRequestsListResponse(w http.ResponseWriter) error {
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(400)
+
+ return json.NewEncoder(w).Encode(response)
+}
+
+type WebhookRequestsList401JSONResponse APIErrors
+
+func (response WebhookRequestsList401JSONResponse) VisitWebhookRequestsListResponse(w http.ResponseWriter) error {
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(401)
+
+ return json.NewEncoder(w).Encode(response)
+}
+
+type WebhookRequestsList405JSONResponse APIErrors
+
+func (response WebhookRequestsList405JSONResponse) VisitWebhookRequestsListResponse(w http.ResponseWriter) error {
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(405)
+
+ return json.NewEncoder(w).Encode(response)
+}
+
type WorkerGetRequestObject struct {
Worker openapi_types.UUID `json:"worker"`
Params WorkerGetParams
@@ -6420,6 +6510,8 @@ type StrictServerInterface interface {
WebhookDelete(ctx echo.Context, request WebhookDeleteRequestObject) (WebhookDeleteResponseObject, error)
+ WebhookRequestsList(ctx echo.Context, request WebhookRequestsListRequestObject) (WebhookRequestsListResponseObject, error)
+
WorkerGet(ctx echo.Context, request WorkerGetRequestObject) (WorkerGetResponseObject, error)
WorkerUpdate(ctx echo.Context, request WorkerUpdateRequestObject) (WorkerUpdateResponseObject, error)
@@ -8190,6 +8282,31 @@ func (sh *strictHandler) WebhookDelete(ctx echo.Context, webhook openapi_types.U
return nil
}
+// WebhookRequestsList operation middleware
+func (sh *strictHandler) WebhookRequestsList(ctx echo.Context, webhook openapi_types.UUID) error {
+ var request WebhookRequestsListRequestObject
+
+ request.Webhook = webhook
+
+ handler := func(ctx echo.Context, request interface{}) (interface{}, error) {
+ return sh.ssi.WebhookRequestsList(ctx, request.(WebhookRequestsListRequestObject))
+ }
+ for _, middleware := range sh.middlewares {
+ handler = middleware(handler, "WebhookRequestsList")
+ }
+
+ response, err := handler(ctx, request)
+
+ if err != nil {
+ return err
+ } else if validResponse, ok := response.(WebhookRequestsListResponseObject); ok {
+ return validResponse.VisitWebhookRequestsListResponse(ctx.Response())
+ } else if response != nil {
+ return fmt.Errorf("Unexpected response type: %T", response)
+ }
+ return nil
+}
+
// WorkerGet operation middleware
func (sh *strictHandler) WorkerGet(ctx echo.Context, worker openapi_types.UUID, params WorkerGetParams) error {
var request WorkerGetRequestObject
@@ -8435,171 +8552,174 @@ func (sh *strictHandler) WorkflowVersionGetDefinition(ctx echo.Context, workflow
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
- "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",
+ "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",
}
// GetSwagger returns the content of the embedded swagger specification file
diff --git a/api/v1/server/oas/transformers/webhook_worker.go b/api/v1/server/oas/transformers/webhook_worker.go
index e2e407557..e8644e1df 100644
--- a/api/v1/server/oas/transformers/webhook_worker.go
+++ b/api/v1/server/oas/transformers/webhook_worker.go
@@ -6,6 +6,14 @@ import (
"github.com/hatchet-dev/hatchet/pkg/repository/prisma/sqlchelpers"
)
+func ToWebhookWorkerRequest(webhookWorker *dbsqlc.WebhookWorkerRequest) *gen.WebhookWorkerRequest {
+ return &gen.WebhookWorkerRequest{
+ CreatedAt: webhookWorker.CreatedAt.Time,
+ Method: webhookWorker.Method,
+ StatusCode: int(webhookWorker.StatusCode),
+ }
+}
+
func ToWebhookWorker(webhookWorker *dbsqlc.WebhookWorker) *gen.WebhookWorker {
return &gen.WebhookWorker{
Metadata: *toAPIMetadata(
diff --git a/api/v1/server/oas/transformers/worker.go b/api/v1/server/oas/transformers/worker.go
index e2137cdc3..67efe2f76 100644
--- a/api/v1/server/oas/transformers/worker.go
+++ b/api/v1/server/oas/transformers/worker.go
@@ -5,6 +5,7 @@ import (
"time"
"github.com/google/uuid"
+ "github.com/jackc/pgx/v5/pgtype"
"github.com/hatchet-dev/hatchet/api/v1/server/oas/gen"
"github.com/hatchet-dev/hatchet/pkg/repository/prisma/db"
@@ -133,7 +134,7 @@ func ToWorker(worker *db.WorkerModel) *gen.Worker {
return res
}
-func ToWorkerSqlc(worker *dbsqlc.Worker, slots *int, webhookUrl *string) *gen.Worker {
+func ToWorkerSqlc(worker *dbsqlc.Worker, slots *int, webhookUrl *string, actions []pgtype.Text) *gen.Worker {
dispatcherId := uuid.MustParse(pgUUIDToStr(worker.DispatcherId))
@@ -166,9 +167,24 @@ func ToWorkerSqlc(worker *dbsqlc.Worker, slots *int, webhookUrl *string) *gen.Wo
WebhookUrl: webhookUrl,
}
+ if worker.WebhookId.Valid {
+ wid := uuid.MustParse(pgUUIDToStr(worker.WebhookId))
+ res.WebhookId = &wid
+ }
+
if !worker.LastHeartbeatAt.Time.IsZero() {
res.LastHeartbeatAt = &worker.LastHeartbeatAt.Time
}
+ if actions != nil {
+ apiActions := make([]string, len(actions))
+
+ for i := range actions {
+ apiActions[i] = actions[i].String
+ }
+
+ res.Actions = &apiActions
+ }
+
return res
}
diff --git a/frontend/app/src/components/cloud/logging/logs.tsx b/frontend/app/src/components/cloud/logging/logs.tsx
index 444fafbd0..8cc4b1153 100644
--- a/frontend/app/src/components/cloud/logging/logs.tsx
+++ b/frontend/app/src/components/cloud/logging/logs.tsx
@@ -8,8 +8,12 @@ const convert = new AnsiToHtml({
bg: 'transparent',
});
+export interface ExtendedLogLine extends LogLine {
+ badge?: React.ReactNode;
+}
+
type LogProps = {
- logs: LogLine[];
+ logs: ExtendedLogLine[];
onTopReached: () => void;
onBottomReached: () => void;
};
@@ -117,6 +121,10 @@ const LoggingComponent: React.FC = ({
},
];
+ const sortedLogs = [...showLogs].sort(
+ (a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime(),
+ );
+
return (
= ({
Refreshing...
)}
- {showLogs.map((log, i) => {
+ {sortedLogs.map((log, i) => {
const sanitizedHtml = DOMPurify.sanitize(convert.toHtml(log.line), {
USE_PROFILES: { html: true },
});
@@ -141,6 +149,7 @@ const LoggingComponent: React.FC = ({
className="pb-2 break-all overflow-x-hidden"
id={'log' + i}
>
+ {log.badge}
{new Date(log.timestamp)
.toLocaleString('sv', options)
diff --git a/frontend/app/src/components/ui/copy-to-clipboard.tsx b/frontend/app/src/components/ui/copy-to-clipboard.tsx
index 6f9601d47..532343190 100644
--- a/frontend/app/src/components/ui/copy-to-clipboard.tsx
+++ b/frontend/app/src/components/ui/copy-to-clipboard.tsx
@@ -8,9 +8,15 @@ type Props = {
text: string;
className?: string;
withText?: boolean;
+ onCopy?: () => void;
};
-const CopyToClipboard: React.FC = ({ text, className, withText }) => {
+const CopyToClipboard: React.FC = ({
+ text,
+ className,
+ withText,
+ onCopy,
+}) => {
const [successCopy, setSuccessCopy] = useState(false);
return (
@@ -25,7 +31,8 @@ const CopyToClipboard: React.FC = ({ text, className, withText }) => {
onClick={() => {
navigator.clipboard.writeText(text);
setSuccessCopy(true);
-
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
+ onCopy && onCopy();
setTimeout(() => {
setSuccessCopy(false);
}, 2000);
diff --git a/frontend/app/src/components/ui/secret-copier.tsx b/frontend/app/src/components/ui/secret-copier.tsx
new file mode 100644
index 000000000..bc6cabddc
--- /dev/null
+++ b/frontend/app/src/components/ui/secret-copier.tsx
@@ -0,0 +1,191 @@
+import { Light as SyntaxHighlighter } from 'react-syntax-highlighter';
+import typescript from 'react-syntax-highlighter/dist/esm/languages/hljs/typescript';
+import yaml from 'react-syntax-highlighter/dist/esm/languages/hljs/yaml';
+import json from 'react-syntax-highlighter/dist/esm/languages/hljs/json';
+import {
+ anOldHope,
+ atomOneLight,
+} from 'react-syntax-highlighter/dist/esm/styles/hljs';
+import CopyToClipboard from './copy-to-clipboard';
+import { useRef, useState } from 'react';
+import { cn } from '@/lib/utils';
+import { useTheme } from '../theme-provider';
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from '@/components/ui/dropdown-menu';
+import { Button } from './button';
+import { CaretSortIcon } from '@radix-ui/react-icons';
+
+SyntaxHighlighter.registerLanguage('typescript', typescript);
+SyntaxHighlighter.registerLanguage('yaml', yaml);
+SyntaxHighlighter.registerLanguage('json', json);
+
+type Secrets = Record;
+
+enum Formats {
+ TABLE = 'table',
+ JSON = 'json',
+ YAML = 'yaml',
+ DOTENV = 'dotenv',
+ CLI = 'cli',
+}
+
+export function SecretCopier({
+ secrets,
+ className,
+ maxHeight,
+ maxWidth,
+ copy,
+ onClick,
+}: {
+ secrets: Secrets;
+ className?: string;
+ maxHeight?: string;
+ maxWidth?: string;
+ copy?: boolean;
+ onClick?: () => void;
+}) {
+ const { theme } = useTheme();
+ const textareaRef = useRef(null);
+ const [format, setFormat] = useState(Formats.DOTENV);
+
+ const renderSecrets = () => {
+ switch (format) {
+ case Formats.JSON:
+ return JSON.stringify(secrets, null, 2);
+ case Formats.YAML:
+ return toYAML(secrets);
+ case Formats.TABLE:
+ return (
+
+
+
+ | Env Var |
+ Value |
+
+
+
+ {Object.entries(secrets).map(([key, value]) => (
+
+ |
+ {key}
+ |
+
+ {value}
+ |
+
+ ))}
+
+
+ );
+ case Formats.CLI:
+ return toCliEnv(secrets);
+ case Formats.DOTENV:
+ default:
+ return toDotEnv(secrets);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+ setFormat(Formats.DOTENV)}>
+ {Formats.DOTENV}
+
+ setFormat(Formats.CLI)}>
+ {Formats.CLI}
+
+ setFormat(Formats.JSON)}>
+ {Formats.JSON}
+
+ setFormat(Formats.YAML)}>
+ {Formats.YAML}
+
+ setFormat(Formats.TABLE)}>
+ {Formats.TABLE}
+
+
+
+
+
textareaRef.current?.focus()}
+ onClick={() => {
+ textareaRef.current?.focus();
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
+ onClick && onClick();
+ }}
+ className="relative flex bg-muted rounded-lg"
+ >
+ {format === Formats.TABLE ? (
+ renderSecrets()
+ ) : (
+
+ {renderSecrets() as string}
+
+ )}
+
+ {copy && format !== Formats.TABLE && (
+
onClick && onClick()}
+ />
+ )}
+
+ );
+}
+
+function toDotEnv(s: Secrets) {
+ return Object.entries(s)
+ .map(([key, value]) => `${key}="${value}"`)
+ .join('\n');
+}
+
+function toCliEnv(s: Secrets) {
+ return Object.entries(s)
+ .map(([key, value]) => `export ${key}="${value}"`)
+ .join('\n');
+}
+
+function toYAML(s: Secrets) {
+ return Object.entries(s)
+ .map(([key, value]) => `${key}:"${value}"`)
+ .join('\n');
+}
diff --git a/frontend/app/src/lib/api/generated/Api.ts b/frontend/app/src/lib/api/generated/Api.ts
index 3ee407e17..9dc2d191e 100644
--- a/frontend/app/src/lib/api/generated/Api.ts
+++ b/frontend/app/src/lib/api/generated/Api.ts
@@ -70,6 +70,7 @@ import {
WebhookWorkerCreated,
WebhookWorkerCreateRequest,
WebhookWorkerListResponse,
+ WebhookWorkerRequestListResponse,
Worker,
WorkerList,
Workflow,
@@ -1641,6 +1642,22 @@ export class Api extends HttpClient
+ this.request({
+ path: `/api/v1/webhook-workers/${webhook}/requests`,
+ method: 'GET',
+ secure: true,
+ format: 'json',
+ ...params,
+ });
/**
* @description Get the input for a workflow run.
*
diff --git a/frontend/app/src/lib/api/generated/data-contracts.ts b/frontend/app/src/lib/api/generated/data-contracts.ts
index 404829037..35b1d232a 100644
--- a/frontend/app/src/lib/api/generated/data-contracts.ts
+++ b/frontend/app/src/lib/api/generated/data-contracts.ts
@@ -946,6 +946,11 @@ export interface Worker {
labels?: WorkerLabel[];
/** The webhook URL for the worker. */
webhookUrl?: string;
+ /**
+ * The webhook ID for the worker.
+ * @format uuid
+ */
+ webhookId?: string;
}
export interface WorkerLabel {
@@ -1135,6 +1140,29 @@ export interface WebhookWorker {
url: string;
}
+export enum WebhookWorkerRequestMethod {
+ GET = 'GET',
+ POST = 'POST',
+ PUT = 'PUT',
+}
+
+export interface WebhookWorkerRequest {
+ /**
+ * The date and time the request was created.
+ * @format date-time
+ */
+ created_at: string;
+ /** The HTTP method used for the request. */
+ method: WebhookWorkerRequestMethod;
+ /** The HTTP status code of the response. */
+ statusCode: number;
+}
+
+export interface WebhookWorkerRequestListResponse {
+ /** The list of webhook requests. */
+ requests?: WebhookWorkerRequest[];
+}
+
export interface WebhookWorkerCreated {
metadata: APIResourceMeta;
/** The name of the webhook worker. */
diff --git a/frontend/app/src/lib/api/queries.ts b/frontend/app/src/lib/api/queries.ts
index b6fbaeba4..81d1a0992 100644
--- a/frontend/app/src/lib/api/queries.ts
+++ b/frontend/app/src/lib/api/queries.ts
@@ -286,5 +286,10 @@ export const queries = createQueryKeyStore({
queryFn: async () =>
(await api.webhookCreate(tenant, webhookWorker)).data,
}),
+ listRequests: (webhookWorkerId: string) => ({
+ queryKey: ['webhook-worker:list:requests', webhookWorkerId],
+ queryFn: async () =>
+ (await api.webhookRequestsList(webhookWorkerId)).data,
+ }),
},
});
diff --git a/frontend/app/src/pages/main/tenant-settings/api-tokens/components/create-token-dialog.tsx b/frontend/app/src/pages/main/tenant-settings/api-tokens/components/create-token-dialog.tsx
index e19da40b1..b7194a66f 100644
--- a/frontend/app/src/pages/main/tenant-settings/api-tokens/components/create-token-dialog.tsx
+++ b/frontend/app/src/pages/main/tenant-settings/api-tokens/components/create-token-dialog.tsx
@@ -11,7 +11,6 @@ import { Label } from '@/components/ui/label';
import { Input } from '@/components/ui/input';
import { cn } from '@/lib/utils';
import { Spinner } from '@/components/ui/loading';
-import { CodeHighlighter } from '@/components/ui/code-highlighter';
import {
Select,
SelectContent,
@@ -19,6 +18,7 @@ import {
SelectTrigger,
SelectValue,
} from '@/components/ui/select';
+import { SecretCopier } from '@/components/ui/secret-copier';
export const EXPIRES_IN_OPTS = {
'3 months': `${3 * 30 * 24 * 60 * 60}s`,
@@ -65,12 +65,10 @@ export function CreateTokenDialog({
This is the only time we will show you this token. Make sure to copy
it somewhere safe.
-
diff --git a/frontend/app/src/pages/main/workers/$worker/index.tsx b/frontend/app/src/pages/main/workers/$worker/index.tsx
index 66a116285..77b5f619a 100644
--- a/frontend/app/src/pages/main/workers/$worker/index.tsx
+++ b/frontend/app/src/pages/main/workers/$worker/index.tsx
@@ -30,6 +30,7 @@ import { DataTable } from '@/components/molecules/data-table/data-table';
import { columns } from './components/step-runs-columns';
import { Switch } from '@/components/ui/switch';
import { Label } from '@/components/ui/label';
+import { RecentWebhookRequests } from '../webhooks/components/recent-webhook-requests';
export const isHealthy = (worker?: Worker) => {
const reasons = [];
@@ -136,6 +137,7 @@ export default function ExpandedWorkflowRun() {
+ {worker.type}
Workers/
{worker.webhookUrl || worker.name}
@@ -263,6 +265,18 @@ export default function ExpandedWorkflowRun() {
);
})}
+ {worker.webhookId && (
+ <>
+
+
+
+ Recent HTTP Health Checks
+
+
+
+ >
+ )}
+
Worker Labels
diff --git a/frontend/app/src/pages/main/workers/webhooks/components/create-webhook-worker-dialog.tsx b/frontend/app/src/pages/main/workers/webhooks/components/create-webhook-worker-dialog.tsx
index 98a4670b1..101e04439 100644
--- a/frontend/app/src/pages/main/workers/webhooks/components/create-webhook-worker-dialog.tsx
+++ b/frontend/app/src/pages/main/workers/webhooks/components/create-webhook-worker-dialog.tsx
@@ -11,10 +11,12 @@ import { Label } from '@/components/ui/label';
import { Input } from '@/components/ui/input';
import { cn } from '@/lib/utils';
import { Spinner } from '@/components/ui/loading';
-import { CodeHighlighter } from '@/components/ui/code-highlighter';
+import { SecretCopier } from '@/components/ui/secret-copier';
+import { useEffect, useState } from 'react';
+import { RecentWebhookRequests } from './recent-webhook-requests';
const schema = z.object({
- name: z.string().min(1).max(255),
+ name: z.string().max(255).optional(),
url: z.string().url().min(1).max(255),
secret: z.string().min(1).max(255).optional(),
});
@@ -22,28 +24,59 @@ const schema = z.object({
interface CreateWebhookWorkerDialogProps {
className?: string;
secret?: string;
- onSubmit: (opts: z.infer) => void;
+ webhookId?: string;
+ onSubmit: (opts: z.infer & { name: string }) => void;
isLoading: boolean;
fieldErrors?: Record;
+ isOpen: boolean;
}
export function CreateWebhookWorkerDialog({
className,
secret,
+ webhookId,
+ isOpen,
...props
}: CreateWebhookWorkerDialogProps) {
const {
register,
handleSubmit,
+ reset,
formState: { errors },
} = useForm>({
resolver: zodResolver(schema),
defaultValues: {},
});
+ const [canTestConnection, setCanTestConnection] = useState(false);
+ const [waitingForConnection, setWaitingForConnection] = useState(false);
+ const [isComplete, setIsComplete] = useState(false);
+
const nameError = errors.name?.message?.toString() || props.fieldErrors?.name;
const urlError = errors.url?.message?.toString() || props.fieldErrors?.url;
+ useEffect(() => {
+ if (!isOpen) {
+ setCanTestConnection(false);
+ setWaitingForConnection(false);
+ setIsComplete(false);
+ reset(); // Reset form fields
+ }
+ }, [isOpen, reset]);
+
+ if (isComplete) {
+ return (
+
+
+ Connected!
+
+
+ Your webhook worker is now connected and ready to receive runs.
+
+
+ );
+ }
+
if (secret) {
return (
@@ -51,16 +84,40 @@ export function CreateWebhookWorkerDialog({
Keep it secret, keep it safe
- Copy the webhook secret and add it in your application.
+ Set the following Hatchet configuration in your application
+ environment:
- setCanTestConnection(true)}
/>
+
+
+ These values should be kept secret and not shared with anyone. They
+ will only be displayed once.
+
+
+
+ {waitingForConnection && webhookId && (
+ setIsComplete(true)}
+ />
+ )}
);
}
@@ -68,37 +125,26 @@ export function CreateWebhookWorkerDialog({
return (
- Create a new Webhook Endpoint
+ Create a New Webhook Worker
diff --git a/frontend/app/src/pages/main/workers/webhooks/components/recent-webhook-requests.tsx b/frontend/app/src/pages/main/workers/webhooks/components/recent-webhook-requests.tsx
new file mode 100644
index 000000000..91f96a0e3
--- /dev/null
+++ b/frontend/app/src/pages/main/workers/webhooks/components/recent-webhook-requests.tsx
@@ -0,0 +1,102 @@
+import LoggingComponent, {
+ ExtendedLogLine,
+} from '@/components/cloud/logging/logs';
+import { Badge } from '@/components/ui/badge';
+import { queries } from '@/lib/api';
+import { useQuery } from '@tanstack/react-query';
+import React, { useEffect, useMemo, useState } from 'react';
+
+interface RecentRequestProps {
+ webhookId: string;
+ onConnected?: () => void;
+ filterBeforeNow?: boolean;
+}
+
+const StatusCodeToMessage: Record = {
+ 200: 'Server can receive run requests!',
+ 401: 'Unauthorized',
+ 403: 'Forbidden, Check if worker path is correct',
+ 404: 'Not Found, Check if worker path is correct',
+ 500: 'Internal Server Error, See server worker logs',
+ 502: 'Bad Gateway, Check if domain is correct and the server is running',
+};
+
+export const RecentWebhookRequests: React.FC = ({
+ webhookId,
+ onConnected,
+ filterBeforeNow = false,
+}) => {
+ const [timeAfter] = useState(filterBeforeNow ? Date.now() : undefined);
+
+ const webhookRequestQuery = useQuery({
+ ...queries.webhookWorkers.listRequests(webhookId),
+ refetchInterval: 1000,
+ });
+
+ const filteredRequests = timeAfter
+ ? webhookRequestQuery.data?.requests?.filter(
+ (request) => new Date(request.created_at).getTime() > timeAfter,
+ )
+ : webhookRequestQuery.data?.requests;
+
+ useEffect(() => {
+ if (!onConnected) {
+ return;
+ }
+
+ if (!filteredRequests || filteredRequests.length === 0) {
+ return;
+ }
+
+ if (filteredRequests[0].statusCode === 200) {
+ onConnected();
+ }
+ }, [onConnected, filteredRequests]);
+
+ const logLines = useMemo(() => {
+ return (filteredRequests || []).map((request) => {
+ return {
+ line: StatusCodeToMessage[request.statusCode],
+ timestamp: request.created_at,
+ instance: '',
+ badge: (
+
+ {request.statusCode}
+
+ ),
+
+ // statusCode: request.statusCode,
+ // createdAt: request.created_at,
+ // message: StatusCodeToMessage[request.statusCode],
+ // metadata: {},
+ };
+ });
+ }, [filteredRequests]);
+
+ if (webhookRequestQuery.isLoading) {
+ return Loading...
;
+ }
+
+ if (webhookRequestQuery.isError) {
+ return Error: {webhookRequestQuery.error?.message}
;
+ }
+
+ if (
+ !webhookRequestQuery.data ||
+ !webhookRequestQuery.data.requests ||
+ webhookRequestQuery.data.requests.length === 0
+ ) {
+ return Attempting to connect...
;
+ }
+
+ return (
+
+ );
+};
diff --git a/frontend/app/src/pages/main/workers/webhooks/index.tsx b/frontend/app/src/pages/main/workers/webhooks/index.tsx
index 4a006564c..b5588946f 100644
--- a/frontend/app/src/pages/main/workers/webhooks/index.tsx
+++ b/frontend/app/src/pages/main/workers/webhooks/index.tsx
@@ -10,7 +10,7 @@ import {
CardTitle,
} from '@/components/ui/card.tsx';
import { Button } from '@/components/ui/button.tsx';
-import { useState } from 'react';
+import { useEffect, useState } from 'react';
import { useApiError } from '@/lib/hooks.ts';
import { Dialog } from '@/components/ui/dialog.tsx';
import {
@@ -22,6 +22,7 @@ import {
import { BiDotsVertical } from 'react-icons/bi';
import { CreateWebhookWorkerDialog } from './components/create-webhook-worker-dialog';
import { DeleteWebhookWorkerDialog } from './components/delete-webhook-worker-dialog';
+import { Badge } from '@/components/ui/badge';
export default function Webhooks() {
const { tenant } = useOutletContext();
@@ -36,8 +37,8 @@ export default function Webhooks() {
-
- Webhook Workers (BETA)
+
+ Webhook Workers BETA
- Assign webhook workers to workflows.
+ Assign workflow runs to a HTTP endpoint.{' '}
+
+ Learn more.
+
@@ -174,6 +183,7 @@ function CreateWebhookWorker({
setShowDialog: (show: boolean) => void;
}) {
const [generatedToken, setGeneratedToken] = useState
();
+ const [webhookId, setWebhookId] = useState();
const [fieldErrors, setFieldErrors] = useState>({});
const { handleApiError } = useApiError({
setFieldErrors: setFieldErrors,
@@ -187,18 +197,29 @@ function CreateWebhookWorker({
},
onSuccess: (data) => {
setGeneratedToken(data.secret);
+ setWebhookId(data.metadata.id);
onSuccess();
},
onError: handleApiError,
});
+ useEffect(() => {
+ if (showDialog) {
+ setGeneratedToken(undefined);
+ setWebhookId(undefined);
+ setFieldErrors({});
+ }
+ }, [showDialog]);
+
return (
);
diff --git a/internal/services/webhooks/webhooks.go b/internal/services/webhooks/webhooks.go
index 201d40c6a..842acd85d 100644
--- a/internal/services/webhooks/webhooks.go
+++ b/internal/services/webhooks/webhooks.go
@@ -154,7 +154,7 @@ func (c *WebhooksController) cleanupDeletedWorker(id, tenantId string) {
Tenantid: sqlchelpers.UUIDFromStr(tenantId),
})
if err != nil {
- c.sc.Logger.Err(err).Msgf("could not delete webhook worker")
+ c.sc.Logger.Err(err).Msgf("could not delete webhook worker worker")
return
}
@@ -162,6 +162,12 @@ func (c *WebhooksController) cleanupDeletedWorker(id, tenantId string) {
delete(c.registeredWorkerIds, id)
delete(c.cleanups, id)
c.mu.Unlock()
+
+ err = c.sc.EngineRepository.WebhookWorker().HardDeleteWebhookWorker(context.Background(), id, tenantId)
+
+ if err != nil {
+ c.sc.Logger.Err(err).Msgf("could not delete webhook worker")
+ }
}
func (c *WebhooksController) getOrCreateToken(ww *dbsqlc.WebhookWorker, tenantId string) (string, error) {
@@ -190,14 +196,15 @@ func (c *WebhooksController) getOrCreateToken(ww *dbsqlc.WebhookWorker, tenantId
encTokStr := base64.StdEncoding.EncodeToString(encTok)
- _, err = c.sc.EngineRepository.WebhookWorker().UpsertWebhookWorker(context.Background(), &repository.UpsertWebhookWorkerOpts{
- Name: ww.Name,
- URL: ww.Url,
- Secret: ww.Secret,
- TenantId: tenantId,
- TokenID: &tok.TokenId,
- TokenValue: &encTokStr,
- })
+ _, err = c.sc.EngineRepository.WebhookWorker().UpdateWebhookWorkerToken(
+ context.Background(),
+ sqlchelpers.UUIDToStr(ww.ID),
+ tenantId,
+ &repository.UpdateWebhookWorkerTokenOpts{
+ TokenID: &tok.TokenId,
+ TokenValue: &encTokStr,
+ })
+
if err != nil {
return "", fmt.Errorf("could not update webhook worker: %w", err)
}
@@ -215,15 +222,21 @@ func (c *WebhooksController) healthcheck(ww *dbsqlc.WebhookWorker) (*HealthCheck
return nil, err
}
- resp, err := whrequest.Send(context.Background(), ww.Url, secret, struct {
+ resp, statusCode, err := whrequest.Send(context.Background(), ww.Url, secret, struct {
Time time.Time `json:"time"`
}{
Time: time.Now(),
}, func(req *http.Request) {
req.Method = "PUT"
})
- if err != nil {
- return nil, fmt.Errorf("healthcheck request: %w", err)
+
+ if statusCode != nil {
+ err = c.sc.EngineRepository.WebhookWorker().InsertWebhookWorkerRequest(context.Background(), sqlchelpers.UUIDToStr(ww.ID), "PUT", int32(*statusCode))
+ c.sc.Logger.Err(err).Msgf("could not insert webhook worker request")
+ }
+
+ if err != nil || *statusCode != http.StatusOK {
+ return nil, fmt.Errorf("health check request: %w", err)
}
var res HealthCheckResponse
diff --git a/internal/whrequest/request.go b/internal/whrequest/request.go
index dd30d9383..55d555fb0 100644
--- a/internal/whrequest/request.go
+++ b/internal/whrequest/request.go
@@ -12,20 +12,20 @@ import (
"github.com/hatchet-dev/hatchet/internal/signature"
)
-func Send(ctx context.Context, url string, secret string, data any, headers ...func(req *http.Request)) ([]byte, error) {
+func Send(ctx context.Context, url string, secret string, data any, headers ...func(req *http.Request)) ([]byte, *int, error) {
body, err := json.Marshal(data)
if err != nil {
- return nil, err
+ return nil, nil, err
}
req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewReader(body))
if err != nil {
- return nil, err
+ return nil, nil, err
}
sig, err := signature.Sign(string(body), secret)
if err != nil {
- return nil, err
+ return nil, nil, err
}
req.Header.Set("X-Hatchet-Signature", sig)
req.Header.Set("Content-Type", "application/json")
@@ -39,22 +39,25 @@ func Send(ctx context.Context, url string, secret string, data any, headers ...f
Timeout: time.Second * 600,
}
+ // TODO block-list
+
// nolint:gosec
resp, err := httpClient.Do(req)
if err != nil {
- return nil, err
+ connRefused := 502
+ return nil, &connRefused, err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
- return nil, fmt.Errorf("request failed with status code %d", resp.StatusCode)
+ return nil, &resp.StatusCode, fmt.Errorf("request failed with status code %d", resp.StatusCode)
}
res, err := io.ReadAll(resp.Body)
if err != nil {
- return nil, fmt.Errorf("could not read response body: %w", err)
+ return nil, &resp.StatusCode, fmt.Errorf("could not read response body: %w", err)
}
- return res, nil
+ return res, &resp.StatusCode, nil
}
diff --git a/pkg/client/rest/gen.go b/pkg/client/rest/gen.go
index 9d115df16..8ceb85908 100644
--- a/pkg/client/rest/gen.go
+++ b/pkg/client/rest/gen.go
@@ -963,6 +963,25 @@ type WebhookWorkerListResponse struct {
Rows *[]WebhookWorker `json:"rows,omitempty"`
}
+// WebhookWorkerRequest defines model for WebhookWorkerRequest.
+type WebhookWorkerRequest struct {
+ // CreatedAt The date and time the request was created.
+ CreatedAt time.Time `json:"created_at"`
+ Method WebhookWorkerRequestMethod `json:"method"`
+
+ // StatusCode The HTTP status code of the response.
+ StatusCode int `json:"statusCode"`
+}
+
+// WebhookWorkerRequestListResponse defines model for WebhookWorkerRequestListResponse.
+type WebhookWorkerRequestListResponse struct {
+ // Requests The list of webhook requests.
+ Requests *[]WebhookWorkerRequest `json:"requests,omitempty"`
+}
+
+// WebhookWorkerRequestMethod defines model for WebhookWorkerRequestMethod.
+type WebhookWorkerRequestMethod = interface{}
+
// Worker defines model for Worker.
type Worker struct {
// Actions The actions this worker can perform.
@@ -1000,6 +1019,9 @@ type Worker struct {
Status *WorkerStatus `json:"status,omitempty"`
Type WorkerType `json:"type"`
+ // WebhookId The webhook ID for the worker.
+ WebhookId *openapi_types.UUID `json:"webhookId,omitempty"`
+
// WebhookUrl The webhook URL for the worker.
WebhookUrl *string `json:"webhookUrl,omitempty"`
}
@@ -1761,6 +1783,9 @@ type ClientInterface interface {
// WebhookDelete request
WebhookDelete(ctx context.Context, webhook openapi_types.UUID, reqEditors ...RequestEditorFn) (*http.Response, error)
+ // WebhookRequestsList request
+ WebhookRequestsList(ctx context.Context, webhook openapi_types.UUID, reqEditors ...RequestEditorFn) (*http.Response, error)
+
// WorkerGet request
WorkerGet(ctx context.Context, worker openapi_types.UUID, params *WorkerGetParams, reqEditors ...RequestEditorFn) (*http.Response, error)
@@ -2813,6 +2838,18 @@ func (c *Client) WebhookDelete(ctx context.Context, webhook openapi_types.UUID,
return c.Client.Do(req)
}
+func (c *Client) WebhookRequestsList(ctx context.Context, webhook openapi_types.UUID, reqEditors ...RequestEditorFn) (*http.Response, error) {
+ req, err := NewWebhookRequestsListRequest(c.Server, webhook)
+ if err != nil {
+ return nil, err
+ }
+ req = req.WithContext(ctx)
+ if err := c.applyEditors(ctx, req, reqEditors); err != nil {
+ return nil, err
+ }
+ return c.Client.Do(req)
+}
+
func (c *Client) WorkerGet(ctx context.Context, worker openapi_types.UUID, params *WorkerGetParams, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewWorkerGetRequest(c.Server, worker, params)
if err != nil {
@@ -6057,6 +6094,40 @@ func NewWebhookDeleteRequest(server string, webhook openapi_types.UUID) (*http.R
return req, nil
}
+// NewWebhookRequestsListRequest generates requests for WebhookRequestsList
+func NewWebhookRequestsListRequest(server string, webhook openapi_types.UUID) (*http.Request, error) {
+ var err error
+
+ var pathParam0 string
+
+ pathParam0, err = runtime.StyleParamWithLocation("simple", false, "webhook", runtime.ParamLocationPath, webhook)
+ if err != nil {
+ return nil, err
+ }
+
+ serverURL, err := url.Parse(server)
+ if err != nil {
+ return nil, err
+ }
+
+ operationPath := fmt.Sprintf("/api/v1/webhook-workers/%s/requests", pathParam0)
+ if operationPath[0] == '/' {
+ operationPath = "." + operationPath
+ }
+
+ queryURL, err := serverURL.Parse(operationPath)
+ if err != nil {
+ return nil, err
+ }
+
+ req, err := http.NewRequest("GET", queryURL.String(), nil)
+ if err != nil {
+ return nil, err
+ }
+
+ return req, nil
+}
+
// NewWorkerGetRequest generates requests for WorkerGet
func NewWorkerGetRequest(server string, worker openapi_types.UUID, params *WorkerGetParams) (*http.Request, error) {
var err error
@@ -6794,6 +6865,9 @@ type ClientWithResponsesInterface interface {
// WebhookDeleteWithResponse request
WebhookDeleteWithResponse(ctx context.Context, webhook openapi_types.UUID, reqEditors ...RequestEditorFn) (*WebhookDeleteResponse, error)
+ // WebhookRequestsListWithResponse request
+ WebhookRequestsListWithResponse(ctx context.Context, webhook openapi_types.UUID, reqEditors ...RequestEditorFn) (*WebhookRequestsListResponse, error)
+
// WorkerGetWithResponse request
WorkerGetWithResponse(ctx context.Context, worker openapi_types.UUID, params *WorkerGetParams, reqEditors ...RequestEditorFn) (*WorkerGetResponse, error)
@@ -8398,6 +8472,31 @@ func (r WebhookDeleteResponse) StatusCode() int {
return 0
}
+type WebhookRequestsListResponse struct {
+ Body []byte
+ HTTPResponse *http.Response
+ JSON200 *WebhookWorkerRequestListResponse
+ JSON400 *APIErrors
+ JSON401 *APIErrors
+ JSON405 *APIErrors
+}
+
+// Status returns HTTPResponse.Status
+func (r WebhookRequestsListResponse) Status() string {
+ if r.HTTPResponse != nil {
+ return r.HTTPResponse.Status
+ }
+ return http.StatusText(0)
+}
+
+// StatusCode returns HTTPResponse.StatusCode
+func (r WebhookRequestsListResponse) StatusCode() int {
+ if r.HTTPResponse != nil {
+ return r.HTTPResponse.StatusCode
+ }
+ return 0
+}
+
type WorkerGetResponse struct {
Body []byte
HTTPResponse *http.Response
@@ -9366,6 +9465,15 @@ func (c *ClientWithResponses) WebhookDeleteWithResponse(ctx context.Context, web
return ParseWebhookDeleteResponse(rsp)
}
+// WebhookRequestsListWithResponse request returning *WebhookRequestsListResponse
+func (c *ClientWithResponses) WebhookRequestsListWithResponse(ctx context.Context, webhook openapi_types.UUID, reqEditors ...RequestEditorFn) (*WebhookRequestsListResponse, error) {
+ rsp, err := c.WebhookRequestsList(ctx, webhook, reqEditors...)
+ if err != nil {
+ return nil, err
+ }
+ return ParseWebhookRequestsListResponse(rsp)
+}
+
// WorkerGetWithResponse request returning *WorkerGetResponse
func (c *ClientWithResponses) WorkerGetWithResponse(ctx context.Context, worker openapi_types.UUID, params *WorkerGetParams, reqEditors ...RequestEditorFn) (*WorkerGetResponse, error) {
rsp, err := c.WorkerGet(ctx, worker, params, reqEditors...)
@@ -11983,6 +12091,53 @@ func ParseWebhookDeleteResponse(rsp *http.Response) (*WebhookDeleteResponse, err
return response, nil
}
+// ParseWebhookRequestsListResponse parses an HTTP response from a WebhookRequestsListWithResponse call
+func ParseWebhookRequestsListResponse(rsp *http.Response) (*WebhookRequestsListResponse, error) {
+ bodyBytes, err := io.ReadAll(rsp.Body)
+ defer func() { _ = rsp.Body.Close() }()
+ if err != nil {
+ return nil, err
+ }
+
+ response := &WebhookRequestsListResponse{
+ Body: bodyBytes,
+ HTTPResponse: rsp,
+ }
+
+ switch {
+ case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
+ var dest WebhookWorkerRequestListResponse
+ if err := json.Unmarshal(bodyBytes, &dest); err != nil {
+ return nil, err
+ }
+ response.JSON200 = &dest
+
+ case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400:
+ var dest APIErrors
+ if err := json.Unmarshal(bodyBytes, &dest); err != nil {
+ return nil, err
+ }
+ response.JSON400 = &dest
+
+ case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401:
+ var dest APIErrors
+ if err := json.Unmarshal(bodyBytes, &dest); err != nil {
+ return nil, err
+ }
+ response.JSON401 = &dest
+
+ case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 405:
+ var dest APIErrors
+ if err := json.Unmarshal(bodyBytes, &dest); err != nil {
+ return nil, err
+ }
+ response.JSON405 = &dest
+
+ }
+
+ return response, nil
+}
+
// ParseWorkerGetResponse parses an HTTP response from a WorkerGetWithResponse call
func ParseWorkerGetResponse(rsp *http.Response) (*WorkerGetResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
diff --git a/pkg/repository/prisma/db/db_gen.go b/pkg/repository/prisma/db/db_gen.go
index 0812dbe55..1db52aec2 100644
--- a/pkg/repository/prisma/db/db_gen.go
+++ b/pkg/repository/prisma/db/db_gen.go
@@ -186,6 +186,29 @@ model WebhookWorker {
webhookWorkerWorkflows WebhookWorkerWorkflow[]
worker Worker?
+
+ requests WebhookWorkerRequest[]
+}
+
+enum WebhookWorkerRequestMethod {
+ GET
+ POST
+ PUT
+}
+
+model WebhookWorkerRequest {
+ id String @id @unique @default(uuid()) @db.Uuid
+ createdAt DateTime @default(now())
+
+ // the parent webhook worker
+ webhookWorker WebhookWorker @relation(fields: [webhookWorkerId], references: [id], onDelete: Cascade, onUpdate: Cascade)
+ webhookWorkerId String @db.Uuid
+
+ // the request method
+ method WebhookWorkerRequestMethod
+
+ // the request status code
+ statusCode Int
}
model WebhookWorkerWorkflow {
@@ -1855,6 +1878,7 @@ func newClient() *PrismaClient {
c.UserPassword = userPasswordActions{client: c}
c.UserSession = userSessionActions{client: c}
c.WebhookWorker = webhookWorkerActions{client: c}
+ c.WebhookWorkerRequest = webhookWorkerRequestActions{client: c}
c.WebhookWorkerWorkflow = webhookWorkerWorkflowActions{client: c}
c.ControllerPartition = controllerPartitionActions{client: c}
c.TenantWorkerPartition = tenantWorkerPartitionActions{client: c}
@@ -1940,6 +1964,8 @@ type PrismaClient struct {
UserSession userSessionActions
// WebhookWorker provides access to CRUD methods.
WebhookWorker webhookWorkerActions
+ // WebhookWorkerRequest provides access to CRUD methods.
+ WebhookWorkerRequest webhookWorkerRequestActions
// WebhookWorkerWorkflow provides access to CRUD methods.
WebhookWorkerWorkflow webhookWorkerWorkflowActions
// ControllerPartition provides access to CRUD methods.
@@ -2046,6 +2072,15 @@ type PrismaClient struct {
// --- template enums.gotpl ---
+type WebhookWorkerRequestMethod string
+
+const (
+ WebhookWorkerRequestMethodGet WebhookWorkerRequestMethod = "GET"
+ WebhookWorkerRequestMethodPost WebhookWorkerRequestMethod = "POST"
+ WebhookWorkerRequestMethodPut WebhookWorkerRequestMethod = "PUT"
+)
+
+type RawWebhookWorkerRequestMethod WebhookWorkerRequestMethod
type LimitResource string
const (
@@ -2291,6 +2326,16 @@ const (
WebhookWorkerScalarFieldEnumTenantID WebhookWorkerScalarFieldEnum = "tenantId"
)
+type WebhookWorkerRequestScalarFieldEnum string
+
+const (
+ WebhookWorkerRequestScalarFieldEnumID WebhookWorkerRequestScalarFieldEnum = "id"
+ WebhookWorkerRequestScalarFieldEnumCreatedAt WebhookWorkerRequestScalarFieldEnum = "createdAt"
+ WebhookWorkerRequestScalarFieldEnumWebhookWorkerID WebhookWorkerRequestScalarFieldEnum = "webhookWorkerId"
+ WebhookWorkerRequestScalarFieldEnumMethod WebhookWorkerRequestScalarFieldEnum = "method"
+ WebhookWorkerRequestScalarFieldEnumStatusCode WebhookWorkerRequestScalarFieldEnum = "statusCode"
+)
+
type WebhookWorkerWorkflowScalarFieldEnum string
const (
@@ -3138,6 +3183,22 @@ const webhookWorkerFieldWebhookWorkerWorkflows webhookWorkerPrismaFields = "webh
const webhookWorkerFieldWorker webhookWorkerPrismaFields = "worker"
+const webhookWorkerFieldRequests webhookWorkerPrismaFields = "requests"
+
+type webhookWorkerRequestPrismaFields = prismaFields
+
+const webhookWorkerRequestFieldID webhookWorkerRequestPrismaFields = "id"
+
+const webhookWorkerRequestFieldCreatedAt webhookWorkerRequestPrismaFields = "createdAt"
+
+const webhookWorkerRequestFieldWebhookWorker webhookWorkerRequestPrismaFields = "webhookWorker"
+
+const webhookWorkerRequestFieldWebhookWorkerID webhookWorkerRequestPrismaFields = "webhookWorkerId"
+
+const webhookWorkerRequestFieldMethod webhookWorkerRequestPrismaFields = "method"
+
+const webhookWorkerRequestFieldStatusCode webhookWorkerRequestPrismaFields = "statusCode"
+
type webhookWorkerWorkflowPrismaFields = prismaFields
const webhookWorkerWorkflowFieldID webhookWorkerWorkflowPrismaFields = "id"
@@ -4478,6 +4539,10 @@ func NewMock() (*PrismaClient, *Mock, func(t *testing.T)) {
mock: m,
}
+ m.WebhookWorkerRequest = webhookWorkerRequestMock{
+ mock: m,
+ }
+
m.WebhookWorkerWorkflow = webhookWorkerWorkflowMock{
mock: m,
}
@@ -4698,6 +4763,8 @@ type Mock struct {
WebhookWorker webhookWorkerMock
+ WebhookWorkerRequest webhookWorkerRequestMock
+
WebhookWorkerWorkflow webhookWorkerWorkflowMock
ControllerPartition controllerPartitionMock
@@ -5011,6 +5078,48 @@ func (m *webhookWorkerMockExec) Errors(err error) {
})
}
+type webhookWorkerRequestMock struct {
+ mock *Mock
+}
+
+type WebhookWorkerRequestMockExpectParam interface {
+ ExtractQuery() builder.Query
+ webhookWorkerRequestModel()
+}
+
+func (m *webhookWorkerRequestMock) Expect(query WebhookWorkerRequestMockExpectParam) *webhookWorkerRequestMockExec {
+ return &webhookWorkerRequestMockExec{
+ mock: m.mock,
+ query: query.ExtractQuery(),
+ }
+}
+
+type webhookWorkerRequestMockExec struct {
+ mock *Mock
+ query builder.Query
+}
+
+func (m *webhookWorkerRequestMockExec) Returns(v WebhookWorkerRequestModel) {
+ *m.mock.Expectations = append(*m.mock.Expectations, mock.Expectation{
+ Query: m.query,
+ Want: &v,
+ })
+}
+
+func (m *webhookWorkerRequestMockExec) ReturnsMany(v []WebhookWorkerRequestModel) {
+ *m.mock.Expectations = append(*m.mock.Expectations, mock.Expectation{
+ Query: m.query,
+ Want: &v,
+ })
+}
+
+func (m *webhookWorkerRequestMockExec) Errors(err error) {
+ *m.mock.Expectations = append(*m.mock.Expectations, mock.Expectation{
+ Query: m.query,
+ WantErr: err,
+ })
+}
+
type webhookWorkerWorkflowMock struct {
mock *Mock
}
@@ -7413,6 +7522,7 @@ type RelationsWebhookWorker struct {
Tenant *TenantModel `json:"tenant,omitempty"`
WebhookWorkerWorkflows []WebhookWorkerWorkflowModel `json:"webhookWorkerWorkflows,omitempty"`
Worker *WorkerModel `json:"worker,omitempty"`
+ Requests []WebhookWorkerRequestModel `json:"requests,omitempty"`
}
func (r WebhookWorkerModel) TokenValue() (value String, ok bool) {
@@ -7457,6 +7567,49 @@ func (r WebhookWorkerModel) Worker() (value *WorkerModel, ok bool) {
return r.RelationsWebhookWorker.Worker, true
}
+func (r WebhookWorkerModel) Requests() (value []WebhookWorkerRequestModel) {
+ if r.RelationsWebhookWorker.Requests == nil {
+ panic("attempted to access requests but did not fetch it using the .With() syntax")
+ }
+ return r.RelationsWebhookWorker.Requests
+}
+
+// WebhookWorkerRequestModel represents the WebhookWorkerRequest model and is a wrapper for accessing fields and methods
+type WebhookWorkerRequestModel struct {
+ InnerWebhookWorkerRequest
+ RelationsWebhookWorkerRequest
+}
+
+// InnerWebhookWorkerRequest holds the actual data
+type InnerWebhookWorkerRequest struct {
+ ID string `json:"id"`
+ CreatedAt DateTime `json:"createdAt"`
+ WebhookWorkerID string `json:"webhookWorkerId"`
+ Method WebhookWorkerRequestMethod `json:"method"`
+ StatusCode int `json:"statusCode"`
+}
+
+// RawWebhookWorkerRequestModel is a struct for WebhookWorkerRequest when used in raw queries
+type RawWebhookWorkerRequestModel struct {
+ ID RawString `json:"id"`
+ CreatedAt RawDateTime `json:"createdAt"`
+ WebhookWorkerID RawString `json:"webhookWorkerId"`
+ Method RawWebhookWorkerRequestMethod `json:"method"`
+ StatusCode RawInt `json:"statusCode"`
+}
+
+// RelationsWebhookWorkerRequest holds the relation data separately
+type RelationsWebhookWorkerRequest struct {
+ WebhookWorker *WebhookWorkerModel `json:"webhookWorker,omitempty"`
+}
+
+func (r WebhookWorkerRequestModel) WebhookWorker() (value *WebhookWorkerModel) {
+ if r.RelationsWebhookWorkerRequest.WebhookWorker == nil {
+ panic("attempted to access webhookWorker but did not fetch it using the .With() syntax")
+ }
+ return r.RelationsWebhookWorkerRequest.WebhookWorker
+}
+
// WebhookWorkerWorkflowModel represents the WebhookWorkerWorkflow model and is a wrapper for accessing fields and methods
type WebhookWorkerWorkflowModel struct {
InnerWebhookWorkerWorkflow
@@ -20522,6 +20675,8 @@ type webhookWorkerQuery struct {
WebhookWorkerWorkflows webhookWorkerQueryWebhookWorkerWorkflowsRelations
Worker webhookWorkerQueryWorkerRelations
+
+ Requests webhookWorkerQueryRequestsRelations
}
func (webhookWorkerQuery) Not(params ...WebhookWorkerWhereParam) webhookWorkerDefaultParam {
@@ -24220,6 +24375,1886 @@ func (r webhookWorkerQueryWorkerWorker) Field() webhookWorkerPrismaFields {
return webhookWorkerFieldWorker
}
+// base struct
+type webhookWorkerQueryRequestsWebhookWorkerRequest struct{}
+
+type webhookWorkerQueryRequestsRelations struct{}
+
+// WebhookWorker -> Requests
+//
+// @relation
+// @required
+func (webhookWorkerQueryRequestsRelations) Some(
+ params ...WebhookWorkerRequestWhereParam,
+) webhookWorkerDefaultParam {
+ var fields []builder.Field
+
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+
+ return webhookWorkerDefaultParam{
+ data: builder.Field{
+ Name: "requests",
+ Fields: []builder.Field{
+ {
+ Name: "some",
+ Fields: fields,
+ },
+ },
+ },
+ }
+}
+
+// WebhookWorker -> Requests
+//
+// @relation
+// @required
+func (webhookWorkerQueryRequestsRelations) Every(
+ params ...WebhookWorkerRequestWhereParam,
+) webhookWorkerDefaultParam {
+ var fields []builder.Field
+
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+
+ return webhookWorkerDefaultParam{
+ data: builder.Field{
+ Name: "requests",
+ Fields: []builder.Field{
+ {
+ Name: "every",
+ Fields: fields,
+ },
+ },
+ },
+ }
+}
+
+// WebhookWorker -> Requests
+//
+// @relation
+// @required
+func (webhookWorkerQueryRequestsRelations) None(
+ params ...WebhookWorkerRequestWhereParam,
+) webhookWorkerDefaultParam {
+ var fields []builder.Field
+
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+
+ return webhookWorkerDefaultParam{
+ data: builder.Field{
+ Name: "requests",
+ Fields: []builder.Field{
+ {
+ Name: "none",
+ Fields: fields,
+ },
+ },
+ },
+ }
+}
+
+func (webhookWorkerQueryRequestsRelations) Fetch(
+
+ params ...WebhookWorkerRequestWhereParam,
+
+) webhookWorkerToRequestsFindMany {
+ var v webhookWorkerToRequestsFindMany
+
+ v.query.Operation = "query"
+ v.query.Method = "requests"
+ v.query.Outputs = webhookWorkerRequestOutput
+
+ var where []builder.Field
+ for _, q := range params {
+ if query := q.getQuery(); query.Operation != "" {
+ v.query.Outputs = append(v.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ } else {
+ where = append(where, q.field())
+ }
+ }
+
+ if len(where) > 0 {
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "where",
+ Fields: where,
+ })
+ }
+
+ return v
+}
+
+func (r webhookWorkerQueryRequestsRelations) Link(
+ params ...WebhookWorkerRequestWhereParam,
+) webhookWorkerSetParam {
+ var fields []builder.Field
+
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+
+ return webhookWorkerSetParam{
+ data: builder.Field{
+ Name: "requests",
+ Fields: []builder.Field{
+ {
+ Name: "connect",
+ Fields: builder.TransformEquals(fields),
+
+ List: true,
+ WrapList: true,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerQueryRequestsRelations) Unlink(
+ params ...WebhookWorkerRequestWhereParam,
+) webhookWorkerSetParam {
+ var v webhookWorkerSetParam
+
+ var fields []builder.Field
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+ v = webhookWorkerSetParam{
+ data: builder.Field{
+ Name: "requests",
+ Fields: []builder.Field{
+ {
+ Name: "disconnect",
+ List: true,
+ WrapList: true,
+ Fields: builder.TransformEquals(fields),
+ },
+ },
+ },
+ }
+
+ return v
+}
+
+func (r webhookWorkerQueryRequestsWebhookWorkerRequest) Field() webhookWorkerPrismaFields {
+ return webhookWorkerFieldRequests
+}
+
+// WebhookWorkerRequest acts as a namespaces to access query methods for the WebhookWorkerRequest model
+var WebhookWorkerRequest = webhookWorkerRequestQuery{}
+
+// webhookWorkerRequestQuery exposes query functions for the webhookWorkerRequest model
+type webhookWorkerRequestQuery struct {
+
+ // ID
+ //
+ // @required
+ ID webhookWorkerRequestQueryIDString
+
+ // CreatedAt
+ //
+ // @required
+ CreatedAt webhookWorkerRequestQueryCreatedAtDateTime
+
+ WebhookWorker webhookWorkerRequestQueryWebhookWorkerRelations
+
+ // WebhookWorkerID
+ //
+ // @required
+ WebhookWorkerID webhookWorkerRequestQueryWebhookWorkerIDString
+
+ // Method
+ //
+ // @required
+ Method webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod
+
+ // StatusCode
+ //
+ // @required
+ StatusCode webhookWorkerRequestQueryStatusCodeInt
+}
+
+func (webhookWorkerRequestQuery) Not(params ...WebhookWorkerRequestWhereParam) webhookWorkerRequestDefaultParam {
+ var fields []builder.Field
+
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "NOT",
+ List: true,
+ WrapList: true,
+ Fields: fields,
+ },
+ }
+}
+
+func (webhookWorkerRequestQuery) Or(params ...WebhookWorkerRequestWhereParam) webhookWorkerRequestDefaultParam {
+ var fields []builder.Field
+
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "OR",
+ List: true,
+ WrapList: true,
+ Fields: fields,
+ },
+ }
+}
+
+func (webhookWorkerRequestQuery) And(params ...WebhookWorkerRequestWhereParam) webhookWorkerRequestDefaultParam {
+ var fields []builder.Field
+
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "AND",
+ List: true,
+ WrapList: true,
+ Fields: fields,
+ },
+ }
+}
+
+// base struct
+type webhookWorkerRequestQueryIDString struct{}
+
+// Set the required value of ID
+func (r webhookWorkerRequestQueryIDString) Set(value string) webhookWorkerRequestSetParam {
+
+ return webhookWorkerRequestSetParam{
+ data: builder.Field{
+ Name: "id",
+ Value: value,
+ },
+ }
+
+}
+
+// Set the optional value of ID dynamically
+func (r webhookWorkerRequestQueryIDString) SetIfPresent(value *String) webhookWorkerRequestSetParam {
+ if value == nil {
+ return webhookWorkerRequestSetParam{}
+ }
+
+ return r.Set(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Equals(value string) webhookWorkerRequestWithPrismaIDEqualsUniqueParam {
+
+ return webhookWorkerRequestWithPrismaIDEqualsUniqueParam{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "equals",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) EqualsIfPresent(value *string) webhookWorkerRequestWithPrismaIDEqualsUniqueParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaIDEqualsUniqueParam{}
+ }
+ return r.Equals(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Order(direction SortOrder) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "id",
+ Value: direction,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) Cursor(cursor string) webhookWorkerRequestCursorParam {
+ return webhookWorkerRequestCursorParam{
+ data: builder.Field{
+ Name: "id",
+ Value: cursor,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) In(value []string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "in",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) InIfPresent(value []string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.In(value)
+}
+
+func (r webhookWorkerRequestQueryIDString) NotIn(value []string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "notIn",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) NotInIfPresent(value []string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.NotIn(value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Lt(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "lt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) LtIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.Lt(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Lte(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "lte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) LteIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.Lte(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Gt(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "gt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) GtIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.Gt(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Gte(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "gte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) GteIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.Gte(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Contains(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "contains",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) ContainsIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.Contains(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) StartsWith(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "startsWith",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) StartsWithIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.StartsWith(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) EndsWith(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "endsWith",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) EndsWithIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.EndsWith(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Mode(value QueryMode) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "mode",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) ModeIfPresent(value *QueryMode) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.Mode(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Not(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "not",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryIDString) NotIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.Not(*value)
+}
+
+// deprecated: Use StartsWith instead.
+
+func (r webhookWorkerRequestQueryIDString) HasPrefix(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "starts_with",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use StartsWithIfPresent instead.
+func (r webhookWorkerRequestQueryIDString) HasPrefixIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.HasPrefix(*value)
+}
+
+// deprecated: Use EndsWith instead.
+
+func (r webhookWorkerRequestQueryIDString) HasSuffix(value string) webhookWorkerRequestParamUnique {
+ return webhookWorkerRequestParamUnique{
+ data: builder.Field{
+ Name: "id",
+ Fields: []builder.Field{
+ {
+ Name: "ends_with",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use EndsWithIfPresent instead.
+func (r webhookWorkerRequestQueryIDString) HasSuffixIfPresent(value *string) webhookWorkerRequestParamUnique {
+ if value == nil {
+ return webhookWorkerRequestParamUnique{}
+ }
+ return r.HasSuffix(*value)
+}
+
+func (r webhookWorkerRequestQueryIDString) Field() webhookWorkerRequestPrismaFields {
+ return webhookWorkerRequestFieldID
+}
+
+// base struct
+type webhookWorkerRequestQueryCreatedAtDateTime struct{}
+
+// Set the required value of CreatedAt
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Set(value DateTime) webhookWorkerRequestSetParam {
+
+ return webhookWorkerRequestSetParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Value: value,
+ },
+ }
+
+}
+
+// Set the optional value of CreatedAt dynamically
+func (r webhookWorkerRequestQueryCreatedAtDateTime) SetIfPresent(value *DateTime) webhookWorkerRequestSetParam {
+ if value == nil {
+ return webhookWorkerRequestSetParam{}
+ }
+
+ return r.Set(*value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Equals(value DateTime) webhookWorkerRequestWithPrismaCreatedAtEqualsParam {
+
+ return webhookWorkerRequestWithPrismaCreatedAtEqualsParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "equals",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) EqualsIfPresent(value *DateTime) webhookWorkerRequestWithPrismaCreatedAtEqualsParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaCreatedAtEqualsParam{}
+ }
+ return r.Equals(*value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Order(direction SortOrder) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Value: direction,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Cursor(cursor DateTime) webhookWorkerRequestCursorParam {
+ return webhookWorkerRequestCursorParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Value: cursor,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) In(value []DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "in",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) InIfPresent(value []DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.In(value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) NotIn(value []DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "notIn",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) NotInIfPresent(value []DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.NotIn(value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Lt(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "lt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) LtIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Lt(*value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Lte(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "lte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) LteIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Lte(*value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Gt(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "gt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) GtIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Gt(*value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Gte(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "gte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) GteIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Gte(*value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Not(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "not",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) NotIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Not(*value)
+}
+
+// deprecated: Use Lt instead.
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Before(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "lt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use LtIfPresent instead.
+func (r webhookWorkerRequestQueryCreatedAtDateTime) BeforeIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Before(*value)
+}
+
+// deprecated: Use Gt instead.
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) After(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "gt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use GtIfPresent instead.
+func (r webhookWorkerRequestQueryCreatedAtDateTime) AfterIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.After(*value)
+}
+
+// deprecated: Use Lte instead.
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) BeforeEquals(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "lte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use LteIfPresent instead.
+func (r webhookWorkerRequestQueryCreatedAtDateTime) BeforeEqualsIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.BeforeEquals(*value)
+}
+
+// deprecated: Use Gte instead.
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) AfterEquals(value DateTime) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "createdAt",
+ Fields: []builder.Field{
+ {
+ Name: "gte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use GteIfPresent instead.
+func (r webhookWorkerRequestQueryCreatedAtDateTime) AfterEqualsIfPresent(value *DateTime) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.AfterEquals(*value)
+}
+
+func (r webhookWorkerRequestQueryCreatedAtDateTime) Field() webhookWorkerRequestPrismaFields {
+ return webhookWorkerRequestFieldCreatedAt
+}
+
+// base struct
+type webhookWorkerRequestQueryWebhookWorkerWebhookWorker struct{}
+
+type webhookWorkerRequestQueryWebhookWorkerRelations struct{}
+
+// WebhookWorkerRequest -> WebhookWorker
+//
+// @relation
+// @required
+func (webhookWorkerRequestQueryWebhookWorkerRelations) Where(
+ params ...WebhookWorkerWhereParam,
+) webhookWorkerRequestDefaultParam {
+ var fields []builder.Field
+
+ for _, q := range params {
+ fields = append(fields, q.field())
+ }
+
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorker",
+ Fields: []builder.Field{
+ {
+ Name: "is",
+ Fields: fields,
+ },
+ },
+ },
+ }
+}
+
+func (webhookWorkerRequestQueryWebhookWorkerRelations) Fetch() webhookWorkerRequestToWebhookWorkerFindUnique {
+ var v webhookWorkerRequestToWebhookWorkerFindUnique
+
+ v.query.Operation = "query"
+ v.query.Method = "webhookWorker"
+ v.query.Outputs = webhookWorkerOutput
+
+ return v
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerRelations) Link(
+ params WebhookWorkerWhereParam,
+) webhookWorkerRequestWithPrismaWebhookWorkerSetParam {
+ var fields []builder.Field
+
+ f := params.field()
+ if f.Fields == nil && f.Value == nil {
+ return webhookWorkerRequestWithPrismaWebhookWorkerSetParam{}
+ }
+
+ fields = append(fields, f)
+
+ return webhookWorkerRequestWithPrismaWebhookWorkerSetParam{
+ data: builder.Field{
+ Name: "webhookWorker",
+ Fields: []builder.Field{
+ {
+ Name: "connect",
+ Fields: builder.TransformEquals(fields),
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerRelations) Unlink() webhookWorkerRequestWithPrismaWebhookWorkerSetParam {
+ var v webhookWorkerRequestWithPrismaWebhookWorkerSetParam
+
+ v = webhookWorkerRequestWithPrismaWebhookWorkerSetParam{
+ data: builder.Field{
+ Name: "webhookWorker",
+ Fields: []builder.Field{
+ {
+ Name: "disconnect",
+ Value: true,
+ },
+ },
+ },
+ }
+
+ return v
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerWebhookWorker) Field() webhookWorkerRequestPrismaFields {
+ return webhookWorkerRequestFieldWebhookWorker
+}
+
+// base struct
+type webhookWorkerRequestQueryWebhookWorkerIDString struct{}
+
+// Set the required value of WebhookWorkerID
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Set(value string) webhookWorkerRequestSetParam {
+
+ return webhookWorkerRequestSetParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Value: value,
+ },
+ }
+
+}
+
+// Set the optional value of WebhookWorkerID dynamically
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) SetIfPresent(value *String) webhookWorkerRequestSetParam {
+ if value == nil {
+ return webhookWorkerRequestSetParam{}
+ }
+
+ return r.Set(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Equals(value string) webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam {
+
+ return webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "equals",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) EqualsIfPresent(value *string) webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam{}
+ }
+ return r.Equals(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Order(direction SortOrder) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Value: direction,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Cursor(cursor string) webhookWorkerRequestCursorParam {
+ return webhookWorkerRequestCursorParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Value: cursor,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) In(value []string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "in",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) InIfPresent(value []string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.In(value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) NotIn(value []string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "notIn",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) NotInIfPresent(value []string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.NotIn(value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Lt(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "lt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) LtIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Lt(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Lte(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "lte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) LteIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Lte(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Gt(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "gt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) GtIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Gt(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Gte(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "gte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) GteIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Gte(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Contains(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "contains",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) ContainsIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Contains(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) StartsWith(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "startsWith",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) StartsWithIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.StartsWith(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) EndsWith(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "endsWith",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) EndsWithIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.EndsWith(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Mode(value QueryMode) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "mode",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) ModeIfPresent(value *QueryMode) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Mode(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Not(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "not",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) NotIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Not(*value)
+}
+
+// deprecated: Use StartsWith instead.
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) HasPrefix(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "starts_with",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use StartsWithIfPresent instead.
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) HasPrefixIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.HasPrefix(*value)
+}
+
+// deprecated: Use EndsWith instead.
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) HasSuffix(value string) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "webhookWorkerId",
+ Fields: []builder.Field{
+ {
+ Name: "ends_with",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use EndsWithIfPresent instead.
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) HasSuffixIfPresent(value *string) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.HasSuffix(*value)
+}
+
+func (r webhookWorkerRequestQueryWebhookWorkerIDString) Field() webhookWorkerRequestPrismaFields {
+ return webhookWorkerRequestFieldWebhookWorkerID
+}
+
+// base struct
+type webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod struct{}
+
+// Set the required value of Method
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) Set(value WebhookWorkerRequestMethod) webhookWorkerRequestWithPrismaMethodSetParam {
+
+ return webhookWorkerRequestWithPrismaMethodSetParam{
+ data: builder.Field{
+ Name: "method",
+ Value: value,
+ },
+ }
+
+}
+
+// Set the optional value of Method dynamically
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) SetIfPresent(value *WebhookWorkerRequestMethod) webhookWorkerRequestWithPrismaMethodSetParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaMethodSetParam{}
+ }
+
+ return r.Set(*value)
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) Equals(value WebhookWorkerRequestMethod) webhookWorkerRequestWithPrismaMethodEqualsParam {
+
+ return webhookWorkerRequestWithPrismaMethodEqualsParam{
+ data: builder.Field{
+ Name: "method",
+ Fields: []builder.Field{
+ {
+ Name: "equals",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) EqualsIfPresent(value *WebhookWorkerRequestMethod) webhookWorkerRequestWithPrismaMethodEqualsParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaMethodEqualsParam{}
+ }
+ return r.Equals(*value)
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) Order(direction SortOrder) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "method",
+ Value: direction,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) Cursor(cursor WebhookWorkerRequestMethod) webhookWorkerRequestCursorParam {
+ return webhookWorkerRequestCursorParam{
+ data: builder.Field{
+ Name: "method",
+ Value: cursor,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) In(value []WebhookWorkerRequestMethod) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "method",
+ Fields: []builder.Field{
+ {
+ Name: "in",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) InIfPresent(value []WebhookWorkerRequestMethod) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.In(value)
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) NotIn(value []WebhookWorkerRequestMethod) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "method",
+ Fields: []builder.Field{
+ {
+ Name: "notIn",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) NotInIfPresent(value []WebhookWorkerRequestMethod) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.NotIn(value)
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) Not(value WebhookWorkerRequestMethod) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "method",
+ Fields: []builder.Field{
+ {
+ Name: "not",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) NotIfPresent(value *WebhookWorkerRequestMethod) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Not(*value)
+}
+
+func (r webhookWorkerRequestQueryMethodWebhookWorkerRequestMethod) Field() webhookWorkerRequestPrismaFields {
+ return webhookWorkerRequestFieldMethod
+}
+
+// base struct
+type webhookWorkerRequestQueryStatusCodeInt struct{}
+
+// Set the required value of StatusCode
+func (r webhookWorkerRequestQueryStatusCodeInt) Set(value int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Value: value,
+ },
+ }
+
+}
+
+// Set the optional value of StatusCode dynamically
+func (r webhookWorkerRequestQueryStatusCodeInt) SetIfPresent(value *Int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{}
+ }
+
+ return r.Set(*value)
+}
+
+// Increment the required value of StatusCode
+func (r webhookWorkerRequestQueryStatusCodeInt) Increment(value int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ builder.Field{
+ Name: "increment",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) IncrementIfPresent(value *int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{}
+ }
+ return r.Increment(*value)
+}
+
+// Decrement the required value of StatusCode
+func (r webhookWorkerRequestQueryStatusCodeInt) Decrement(value int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ builder.Field{
+ Name: "decrement",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) DecrementIfPresent(value *int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{}
+ }
+ return r.Decrement(*value)
+}
+
+// Multiply the required value of StatusCode
+func (r webhookWorkerRequestQueryStatusCodeInt) Multiply(value int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ builder.Field{
+ Name: "multiply",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) MultiplyIfPresent(value *int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{}
+ }
+ return r.Multiply(*value)
+}
+
+// Divide the required value of StatusCode
+func (r webhookWorkerRequestQueryStatusCodeInt) Divide(value int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ builder.Field{
+ Name: "divide",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) DivideIfPresent(value *int) webhookWorkerRequestWithPrismaStatusCodeSetParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaStatusCodeSetParam{}
+ }
+ return r.Divide(*value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Equals(value int) webhookWorkerRequestWithPrismaStatusCodeEqualsParam {
+
+ return webhookWorkerRequestWithPrismaStatusCodeEqualsParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "equals",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) EqualsIfPresent(value *int) webhookWorkerRequestWithPrismaStatusCodeEqualsParam {
+ if value == nil {
+ return webhookWorkerRequestWithPrismaStatusCodeEqualsParam{}
+ }
+ return r.Equals(*value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Order(direction SortOrder) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Value: direction,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Cursor(cursor int) webhookWorkerRequestCursorParam {
+ return webhookWorkerRequestCursorParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Value: cursor,
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) In(value []int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "in",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) InIfPresent(value []int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.In(value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) NotIn(value []int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "notIn",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) NotInIfPresent(value []int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.NotIn(value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Lt(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "lt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) LtIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Lt(*value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Lte(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "lte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) LteIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Lte(*value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Gt(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "gt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) GtIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Gt(*value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Gte(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "gte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) GteIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Gte(*value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Not(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "not",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) NotIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.Not(*value)
+}
+
+// deprecated: Use Lt instead.
+
+func (r webhookWorkerRequestQueryStatusCodeInt) LT(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "lt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use LtIfPresent instead.
+func (r webhookWorkerRequestQueryStatusCodeInt) LTIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.LT(*value)
+}
+
+// deprecated: Use Lte instead.
+
+func (r webhookWorkerRequestQueryStatusCodeInt) LTE(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "lte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use LteIfPresent instead.
+func (r webhookWorkerRequestQueryStatusCodeInt) LTEIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.LTE(*value)
+}
+
+// deprecated: Use Gt instead.
+
+func (r webhookWorkerRequestQueryStatusCodeInt) GT(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "gt",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use GtIfPresent instead.
+func (r webhookWorkerRequestQueryStatusCodeInt) GTIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.GT(*value)
+}
+
+// deprecated: Use Gte instead.
+
+func (r webhookWorkerRequestQueryStatusCodeInt) GTE(value int) webhookWorkerRequestDefaultParam {
+ return webhookWorkerRequestDefaultParam{
+ data: builder.Field{
+ Name: "statusCode",
+ Fields: []builder.Field{
+ {
+ Name: "gte",
+ Value: value,
+ },
+ },
+ },
+ }
+}
+
+// deprecated: Use GteIfPresent instead.
+func (r webhookWorkerRequestQueryStatusCodeInt) GTEIfPresent(value *int) webhookWorkerRequestDefaultParam {
+ if value == nil {
+ return webhookWorkerRequestDefaultParam{}
+ }
+ return r.GTE(*value)
+}
+
+func (r webhookWorkerRequestQueryStatusCodeInt) Field() webhookWorkerRequestPrismaFields {
+ return webhookWorkerRequestFieldStatusCode
+}
+
// WebhookWorkerWorkflow acts as a namespaces to access query methods for the WebhookWorkerWorkflow model
var WebhookWorkerWorkflow = webhookWorkerWorkflowQuery{}
@@ -196775,6 +198810,729 @@ func (p webhookWorkerWithPrismaWorkerEqualsUniqueParam) workerField() {}
func (webhookWorkerWithPrismaWorkerEqualsUniqueParam) unique() {}
func (webhookWorkerWithPrismaWorkerEqualsUniqueParam) equals() {}
+type WebhookWorkerWithPrismaRequestsEqualsSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ webhookWorkerModel()
+ requestsField()
+}
+
+type WebhookWorkerWithPrismaRequestsSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerModel()
+ requestsField()
+}
+
+type webhookWorkerWithPrismaRequestsSetParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerWithPrismaRequestsSetParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerWithPrismaRequestsSetParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerWithPrismaRequestsSetParam) webhookWorkerModel() {}
+
+func (p webhookWorkerWithPrismaRequestsSetParam) requestsField() {}
+
+type WebhookWorkerWithPrismaRequestsWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerModel()
+ requestsField()
+}
+
+type webhookWorkerWithPrismaRequestsEqualsParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerWithPrismaRequestsEqualsParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerWithPrismaRequestsEqualsParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerWithPrismaRequestsEqualsParam) webhookWorkerModel() {}
+
+func (p webhookWorkerWithPrismaRequestsEqualsParam) requestsField() {}
+
+func (webhookWorkerWithPrismaRequestsSetParam) settable() {}
+func (webhookWorkerWithPrismaRequestsEqualsParam) equals() {}
+
+type webhookWorkerWithPrismaRequestsEqualsUniqueParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerWithPrismaRequestsEqualsUniqueParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerWithPrismaRequestsEqualsUniqueParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerWithPrismaRequestsEqualsUniqueParam) webhookWorkerModel() {}
+func (p webhookWorkerWithPrismaRequestsEqualsUniqueParam) requestsField() {}
+
+func (webhookWorkerWithPrismaRequestsEqualsUniqueParam) unique() {}
+func (webhookWorkerWithPrismaRequestsEqualsUniqueParam) equals() {}
+
+type webhookWorkerRequestActions struct {
+ // client holds the prisma client
+ client *PrismaClient
+}
+
+var webhookWorkerRequestOutput = []builder.Output{
+ {Name: "id"},
+ {Name: "createdAt"},
+ {Name: "webhookWorkerId"},
+ {Name: "method"},
+ {Name: "statusCode"},
+}
+
+type WebhookWorkerRequestRelationWith interface {
+ getQuery() builder.Query
+ with()
+ webhookWorkerRequestRelation()
+}
+
+type WebhookWorkerRequestWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+}
+
+type webhookWorkerRequestDefaultParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestDefaultParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestDefaultParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestDefaultParam) webhookWorkerRequestModel() {}
+
+type WebhookWorkerRequestOrderByParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+}
+
+type webhookWorkerRequestOrderByParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestOrderByParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestOrderByParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestOrderByParam) webhookWorkerRequestModel() {}
+
+type WebhookWorkerRequestCursorParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ isCursor()
+}
+
+type webhookWorkerRequestCursorParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestCursorParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestCursorParam) isCursor() {}
+
+func (p webhookWorkerRequestCursorParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestCursorParam) webhookWorkerRequestModel() {}
+
+type WebhookWorkerRequestParamUnique interface {
+ field() builder.Field
+ getQuery() builder.Query
+ unique()
+ webhookWorkerRequestModel()
+}
+
+type webhookWorkerRequestParamUnique struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestParamUnique) webhookWorkerRequestModel() {}
+
+func (webhookWorkerRequestParamUnique) unique() {}
+
+func (p webhookWorkerRequestParamUnique) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestParamUnique) getQuery() builder.Query {
+ return p.query
+}
+
+type WebhookWorkerRequestEqualsWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ webhookWorkerRequestModel()
+}
+
+type webhookWorkerRequestEqualsParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestEqualsParam) webhookWorkerRequestModel() {}
+
+func (webhookWorkerRequestEqualsParam) equals() {}
+
+func (p webhookWorkerRequestEqualsParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestEqualsParam) getQuery() builder.Query {
+ return p.query
+}
+
+type WebhookWorkerRequestEqualsUniqueWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ unique()
+ webhookWorkerRequestModel()
+}
+
+type webhookWorkerRequestEqualsUniqueParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestEqualsUniqueParam) webhookWorkerRequestModel() {}
+
+func (webhookWorkerRequestEqualsUniqueParam) unique() {}
+func (webhookWorkerRequestEqualsUniqueParam) equals() {}
+
+func (p webhookWorkerRequestEqualsUniqueParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestEqualsUniqueParam) getQuery() builder.Query {
+ return p.query
+}
+
+type WebhookWorkerRequestSetParam interface {
+ field() builder.Field
+ settable()
+ webhookWorkerRequestModel()
+}
+
+type webhookWorkerRequestSetParam struct {
+ data builder.Field
+}
+
+func (webhookWorkerRequestSetParam) settable() {}
+
+func (p webhookWorkerRequestSetParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestSetParam) webhookWorkerRequestModel() {}
+
+type WebhookWorkerRequestWithPrismaIDEqualsSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ webhookWorkerRequestModel()
+ idField()
+}
+
+type WebhookWorkerRequestWithPrismaIDSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ idField()
+}
+
+type webhookWorkerRequestWithPrismaIDSetParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaIDSetParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaIDSetParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaIDSetParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaIDSetParam) idField() {}
+
+type WebhookWorkerRequestWithPrismaIDWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ idField()
+}
+
+type webhookWorkerRequestWithPrismaIDEqualsParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaIDEqualsParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaIDEqualsParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaIDEqualsParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaIDEqualsParam) idField() {}
+
+func (webhookWorkerRequestWithPrismaIDSetParam) settable() {}
+func (webhookWorkerRequestWithPrismaIDEqualsParam) equals() {}
+
+type webhookWorkerRequestWithPrismaIDEqualsUniqueParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaIDEqualsUniqueParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaIDEqualsUniqueParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaIDEqualsUniqueParam) webhookWorkerRequestModel() {}
+func (p webhookWorkerRequestWithPrismaIDEqualsUniqueParam) idField() {}
+
+func (webhookWorkerRequestWithPrismaIDEqualsUniqueParam) unique() {}
+func (webhookWorkerRequestWithPrismaIDEqualsUniqueParam) equals() {}
+
+type WebhookWorkerRequestWithPrismaCreatedAtEqualsSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ webhookWorkerRequestModel()
+ createdAtField()
+}
+
+type WebhookWorkerRequestWithPrismaCreatedAtSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ createdAtField()
+}
+
+type webhookWorkerRequestWithPrismaCreatedAtSetParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtSetParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtSetParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtSetParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtSetParam) createdAtField() {}
+
+type WebhookWorkerRequestWithPrismaCreatedAtWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ createdAtField()
+}
+
+type webhookWorkerRequestWithPrismaCreatedAtEqualsParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtEqualsParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtEqualsParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtEqualsParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtEqualsParam) createdAtField() {}
+
+func (webhookWorkerRequestWithPrismaCreatedAtSetParam) settable() {}
+func (webhookWorkerRequestWithPrismaCreatedAtEqualsParam) equals() {}
+
+type webhookWorkerRequestWithPrismaCreatedAtEqualsUniqueParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtEqualsUniqueParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtEqualsUniqueParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaCreatedAtEqualsUniqueParam) webhookWorkerRequestModel() {}
+func (p webhookWorkerRequestWithPrismaCreatedAtEqualsUniqueParam) createdAtField() {}
+
+func (webhookWorkerRequestWithPrismaCreatedAtEqualsUniqueParam) unique() {}
+func (webhookWorkerRequestWithPrismaCreatedAtEqualsUniqueParam) equals() {}
+
+type WebhookWorkerRequestWithPrismaWebhookWorkerEqualsSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ webhookWorkerRequestModel()
+ webhookWorkerField()
+}
+
+type WebhookWorkerRequestWithPrismaWebhookWorkerSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ webhookWorkerField()
+}
+
+type webhookWorkerRequestWithPrismaWebhookWorkerSetParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerSetParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerSetParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerSetParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerSetParam) webhookWorkerField() {}
+
+type WebhookWorkerRequestWithPrismaWebhookWorkerWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ webhookWorkerField()
+}
+
+type webhookWorkerRequestWithPrismaWebhookWorkerEqualsParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerEqualsParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerEqualsParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerEqualsParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerEqualsParam) webhookWorkerField() {}
+
+func (webhookWorkerRequestWithPrismaWebhookWorkerSetParam) settable() {}
+func (webhookWorkerRequestWithPrismaWebhookWorkerEqualsParam) equals() {}
+
+type webhookWorkerRequestWithPrismaWebhookWorkerEqualsUniqueParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerEqualsUniqueParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerEqualsUniqueParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerEqualsUniqueParam) webhookWorkerRequestModel() {}
+func (p webhookWorkerRequestWithPrismaWebhookWorkerEqualsUniqueParam) webhookWorkerField() {}
+
+func (webhookWorkerRequestWithPrismaWebhookWorkerEqualsUniqueParam) unique() {}
+func (webhookWorkerRequestWithPrismaWebhookWorkerEqualsUniqueParam) equals() {}
+
+type WebhookWorkerRequestWithPrismaWebhookWorkerIDEqualsSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ webhookWorkerRequestModel()
+ webhookWorkerIDField()
+}
+
+type WebhookWorkerRequestWithPrismaWebhookWorkerIDSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ webhookWorkerIDField()
+}
+
+type webhookWorkerRequestWithPrismaWebhookWorkerIDSetParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDSetParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDSetParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDSetParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDSetParam) webhookWorkerIDField() {}
+
+type WebhookWorkerRequestWithPrismaWebhookWorkerIDWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ webhookWorkerIDField()
+}
+
+type webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam) webhookWorkerIDField() {}
+
+func (webhookWorkerRequestWithPrismaWebhookWorkerIDSetParam) settable() {}
+func (webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsParam) equals() {}
+
+type webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsUniqueParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsUniqueParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsUniqueParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsUniqueParam) webhookWorkerRequestModel() {}
+func (p webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsUniqueParam) webhookWorkerIDField() {}
+
+func (webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsUniqueParam) unique() {}
+func (webhookWorkerRequestWithPrismaWebhookWorkerIDEqualsUniqueParam) equals() {}
+
+type WebhookWorkerRequestWithPrismaMethodEqualsSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ webhookWorkerRequestModel()
+ methodField()
+}
+
+type WebhookWorkerRequestWithPrismaMethodSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ methodField()
+}
+
+type webhookWorkerRequestWithPrismaMethodSetParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaMethodSetParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaMethodSetParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaMethodSetParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaMethodSetParam) methodField() {}
+
+type WebhookWorkerRequestWithPrismaMethodWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ methodField()
+}
+
+type webhookWorkerRequestWithPrismaMethodEqualsParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaMethodEqualsParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaMethodEqualsParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaMethodEqualsParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaMethodEqualsParam) methodField() {}
+
+func (webhookWorkerRequestWithPrismaMethodSetParam) settable() {}
+func (webhookWorkerRequestWithPrismaMethodEqualsParam) equals() {}
+
+type webhookWorkerRequestWithPrismaMethodEqualsUniqueParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaMethodEqualsUniqueParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaMethodEqualsUniqueParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaMethodEqualsUniqueParam) webhookWorkerRequestModel() {}
+func (p webhookWorkerRequestWithPrismaMethodEqualsUniqueParam) methodField() {}
+
+func (webhookWorkerRequestWithPrismaMethodEqualsUniqueParam) unique() {}
+func (webhookWorkerRequestWithPrismaMethodEqualsUniqueParam) equals() {}
+
+type WebhookWorkerRequestWithPrismaStatusCodeEqualsSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ equals()
+ webhookWorkerRequestModel()
+ statusCodeField()
+}
+
+type WebhookWorkerRequestWithPrismaStatusCodeSetParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ statusCodeField()
+}
+
+type webhookWorkerRequestWithPrismaStatusCodeSetParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeSetParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeSetParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeSetParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeSetParam) statusCodeField() {}
+
+type WebhookWorkerRequestWithPrismaStatusCodeWhereParam interface {
+ field() builder.Field
+ getQuery() builder.Query
+ webhookWorkerRequestModel()
+ statusCodeField()
+}
+
+type webhookWorkerRequestWithPrismaStatusCodeEqualsParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeEqualsParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeEqualsParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeEqualsParam) webhookWorkerRequestModel() {}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeEqualsParam) statusCodeField() {}
+
+func (webhookWorkerRequestWithPrismaStatusCodeSetParam) settable() {}
+func (webhookWorkerRequestWithPrismaStatusCodeEqualsParam) equals() {}
+
+type webhookWorkerRequestWithPrismaStatusCodeEqualsUniqueParam struct {
+ data builder.Field
+ query builder.Query
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeEqualsUniqueParam) field() builder.Field {
+ return p.data
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeEqualsUniqueParam) getQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestWithPrismaStatusCodeEqualsUniqueParam) webhookWorkerRequestModel() {}
+func (p webhookWorkerRequestWithPrismaStatusCodeEqualsUniqueParam) statusCodeField() {}
+
+func (webhookWorkerRequestWithPrismaStatusCodeEqualsUniqueParam) unique() {}
+func (webhookWorkerRequestWithPrismaStatusCodeEqualsUniqueParam) equals() {}
+
type webhookWorkerWorkflowActions struct {
// client holds the prisma client
client *PrismaClient
@@ -253510,6 +256268,78 @@ func (r webhookWorkerCreateOne) Tx() WebhookWorkerUniqueTxResult {
return v
}
+// Creates a single webhookWorkerRequest.
+func (r webhookWorkerRequestActions) CreateOne(
+ _webhookWorker WebhookWorkerRequestWithPrismaWebhookWorkerSetParam,
+ _method WebhookWorkerRequestWithPrismaMethodSetParam,
+ _statusCode WebhookWorkerRequestWithPrismaStatusCodeSetParam,
+
+ optional ...WebhookWorkerRequestSetParam,
+) webhookWorkerRequestCreateOne {
+ var v webhookWorkerRequestCreateOne
+ v.query = builder.NewQuery()
+ v.query.Engine = r.client
+
+ v.query.Operation = "mutation"
+ v.query.Method = "createOne"
+ v.query.Model = "WebhookWorkerRequest"
+ v.query.Outputs = webhookWorkerRequestOutput
+
+ var fields []builder.Field
+
+ fields = append(fields, _webhookWorker.field())
+ fields = append(fields, _method.field())
+ fields = append(fields, _statusCode.field())
+
+ for _, q := range optional {
+ fields = append(fields, q.field())
+ }
+
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "data",
+ Fields: fields,
+ })
+ return v
+}
+
+func (r webhookWorkerRequestCreateOne) With(params ...WebhookWorkerRequestRelationWith) webhookWorkerRequestCreateOne {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+type webhookWorkerRequestCreateOne struct {
+ query builder.Query
+}
+
+func (p webhookWorkerRequestCreateOne) ExtractQuery() builder.Query {
+ return p.query
+}
+
+func (p webhookWorkerRequestCreateOne) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestCreateOne) Exec(ctx context.Context) (*WebhookWorkerRequestModel, error) {
+ var v WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestCreateOne) Tx() WebhookWorkerRequestUniqueTxResult {
+ v := newWebhookWorkerRequestUniqueTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
// Creates a single webhookWorkerWorkflow.
func (r webhookWorkerWorkflowActions) CreateOne(
_webhookWorker WebhookWorkerWorkflowWithPrismaWebhookWorkerSetParam,
@@ -265806,6 +268636,560 @@ func (r webhookWorkerToWorkerDeleteMany) Tx() WebhookWorkerManyTxResult {
return v
}
+type webhookWorkerToRequestsFindUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerToRequestsFindUnique) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerToRequestsFindUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerToRequestsFindUnique) with() {}
+func (r webhookWorkerToRequestsFindUnique) webhookWorkerModel() {}
+func (r webhookWorkerToRequestsFindUnique) webhookWorkerRelation() {}
+
+func (r webhookWorkerToRequestsFindUnique) With(params ...WebhookWorkerRequestRelationWith) webhookWorkerToRequestsFindUnique {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindUnique) Select(params ...webhookWorkerPrismaFields) webhookWorkerToRequestsFindUnique {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindUnique) Omit(params ...webhookWorkerPrismaFields) webhookWorkerToRequestsFindUnique {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindUnique) Exec(ctx context.Context) (
+ *WebhookWorkerModel,
+ error,
+) {
+ var v *WebhookWorkerModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerToRequestsFindUnique) ExecInner(ctx context.Context) (
+ *InnerWebhookWorker,
+ error,
+) {
+ var v *InnerWebhookWorker
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerToRequestsFindUnique) Update(params ...WebhookWorkerSetParam) webhookWorkerToRequestsUpdateUnique {
+ r.query.Operation = "mutation"
+ r.query.Method = "updateOne"
+ r.query.Model = "WebhookWorker"
+
+ var v webhookWorkerToRequestsUpdateUnique
+ v.query = r.query
+ var fields []builder.Field
+ for _, q := range params {
+
+ field := q.field()
+
+ _, isJson := field.Value.(types.JSON)
+ if field.Value != nil && !isJson {
+ v := field.Value
+ field.Fields = []builder.Field{
+ {
+ Name: "set",
+ Value: v,
+ },
+ }
+
+ field.Value = nil
+ }
+
+ fields = append(fields, field)
+ }
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "data",
+ Fields: fields,
+ })
+ return v
+}
+
+type webhookWorkerToRequestsUpdateUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerToRequestsUpdateUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerToRequestsUpdateUnique) webhookWorkerModel() {}
+
+func (r webhookWorkerToRequestsUpdateUnique) Exec(ctx context.Context) (*WebhookWorkerModel, error) {
+ var v WebhookWorkerModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerToRequestsUpdateUnique) Tx() WebhookWorkerUniqueTxResult {
+ v := newWebhookWorkerUniqueTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+func (r webhookWorkerToRequestsFindUnique) Delete() webhookWorkerToRequestsDeleteUnique {
+ var v webhookWorkerToRequestsDeleteUnique
+ v.query = r.query
+ v.query.Operation = "mutation"
+ v.query.Method = "deleteOne"
+ v.query.Model = "WebhookWorker"
+
+ return v
+}
+
+type webhookWorkerToRequestsDeleteUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerToRequestsDeleteUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (p webhookWorkerToRequestsDeleteUnique) webhookWorkerModel() {}
+
+func (r webhookWorkerToRequestsDeleteUnique) Exec(ctx context.Context) (*WebhookWorkerModel, error) {
+ var v WebhookWorkerModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerToRequestsDeleteUnique) Tx() WebhookWorkerUniqueTxResult {
+ v := newWebhookWorkerUniqueTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+type webhookWorkerToRequestsFindFirst struct {
+ query builder.Query
+}
+
+func (r webhookWorkerToRequestsFindFirst) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerToRequestsFindFirst) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerToRequestsFindFirst) with() {}
+func (r webhookWorkerToRequestsFindFirst) webhookWorkerModel() {}
+func (r webhookWorkerToRequestsFindFirst) webhookWorkerRelation() {}
+
+func (r webhookWorkerToRequestsFindFirst) With(params ...WebhookWorkerRequestRelationWith) webhookWorkerToRequestsFindFirst {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindFirst) Select(params ...webhookWorkerPrismaFields) webhookWorkerToRequestsFindFirst {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindFirst) Omit(params ...webhookWorkerPrismaFields) webhookWorkerToRequestsFindFirst {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindFirst) OrderBy(params ...WebhookWorkerRequestOrderByParam) webhookWorkerToRequestsFindFirst {
+ var fields []builder.Field
+
+ for _, param := range params {
+ fields = append(fields, builder.Field{
+ Name: param.field().Name,
+ Value: param.field().Value,
+ Fields: param.field().Fields,
+ })
+ }
+
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "orderBy",
+ Fields: fields,
+ WrapList: true,
+ })
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindFirst) Skip(count int) webhookWorkerToRequestsFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "skip",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerToRequestsFindFirst) Take(count int) webhookWorkerToRequestsFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "take",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerToRequestsFindFirst) Cursor(cursor WebhookWorkerCursorParam) webhookWorkerToRequestsFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "cursor",
+ Fields: []builder.Field{cursor.field()},
+ })
+ return r
+}
+
+func (r webhookWorkerToRequestsFindFirst) Exec(ctx context.Context) (
+ *WebhookWorkerModel,
+ error,
+) {
+ var v *WebhookWorkerModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerToRequestsFindFirst) ExecInner(ctx context.Context) (
+ *InnerWebhookWorker,
+ error,
+) {
+ var v *InnerWebhookWorker
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+type webhookWorkerToRequestsFindMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerToRequestsFindMany) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerToRequestsFindMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerToRequestsFindMany) with() {}
+func (r webhookWorkerToRequestsFindMany) webhookWorkerModel() {}
+func (r webhookWorkerToRequestsFindMany) webhookWorkerRelation() {}
+
+func (r webhookWorkerToRequestsFindMany) With(params ...WebhookWorkerRequestRelationWith) webhookWorkerToRequestsFindMany {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindMany) Select(params ...webhookWorkerPrismaFields) webhookWorkerToRequestsFindMany {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindMany) Omit(params ...webhookWorkerPrismaFields) webhookWorkerToRequestsFindMany {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindMany) OrderBy(params ...WebhookWorkerRequestOrderByParam) webhookWorkerToRequestsFindMany {
+ var fields []builder.Field
+
+ for _, param := range params {
+ fields = append(fields, builder.Field{
+ Name: param.field().Name,
+ Value: param.field().Value,
+ Fields: param.field().Fields,
+ })
+ }
+
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "orderBy",
+ Fields: fields,
+ WrapList: true,
+ })
+
+ return r
+}
+
+func (r webhookWorkerToRequestsFindMany) Skip(count int) webhookWorkerToRequestsFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "skip",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerToRequestsFindMany) Take(count int) webhookWorkerToRequestsFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "take",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerToRequestsFindMany) Cursor(cursor WebhookWorkerCursorParam) webhookWorkerToRequestsFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "cursor",
+ Fields: []builder.Field{cursor.field()},
+ })
+ return r
+}
+
+func (r webhookWorkerToRequestsFindMany) Exec(ctx context.Context) (
+ []WebhookWorkerModel,
+ error,
+) {
+ var v []WebhookWorkerModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerToRequestsFindMany) ExecInner(ctx context.Context) (
+ []InnerWebhookWorker,
+ error,
+) {
+ var v []InnerWebhookWorker
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerToRequestsFindMany) Update(params ...WebhookWorkerSetParam) webhookWorkerToRequestsUpdateMany {
+ r.query.Operation = "mutation"
+ r.query.Method = "updateMany"
+ r.query.Model = "WebhookWorker"
+
+ r.query.Outputs = countOutput
+
+ var v webhookWorkerToRequestsUpdateMany
+ v.query = r.query
+ var fields []builder.Field
+ for _, q := range params {
+
+ field := q.field()
+
+ _, isJson := field.Value.(types.JSON)
+ if field.Value != nil && !isJson {
+ v := field.Value
+ field.Fields = []builder.Field{
+ {
+ Name: "set",
+ Value: v,
+ },
+ }
+
+ field.Value = nil
+ }
+
+ fields = append(fields, field)
+ }
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "data",
+ Fields: fields,
+ })
+ return v
+}
+
+type webhookWorkerToRequestsUpdateMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerToRequestsUpdateMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerToRequestsUpdateMany) webhookWorkerModel() {}
+
+func (r webhookWorkerToRequestsUpdateMany) Exec(ctx context.Context) (*BatchResult, error) {
+ var v BatchResult
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerToRequestsUpdateMany) Tx() WebhookWorkerManyTxResult {
+ v := newWebhookWorkerManyTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+func (r webhookWorkerToRequestsFindMany) Delete() webhookWorkerToRequestsDeleteMany {
+ var v webhookWorkerToRequestsDeleteMany
+ v.query = r.query
+ v.query.Operation = "mutation"
+ v.query.Method = "deleteMany"
+ v.query.Model = "WebhookWorker"
+
+ v.query.Outputs = countOutput
+
+ return v
+}
+
+type webhookWorkerToRequestsDeleteMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerToRequestsDeleteMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (p webhookWorkerToRequestsDeleteMany) webhookWorkerModel() {}
+
+func (r webhookWorkerToRequestsDeleteMany) Exec(ctx context.Context) (*BatchResult, error) {
+ var v BatchResult
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerToRequestsDeleteMany) Tx() WebhookWorkerManyTxResult {
+ v := newWebhookWorkerManyTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
type webhookWorkerFindUnique struct {
query builder.Query
}
@@ -266456,6 +269840,1210 @@ func (r webhookWorkerDeleteMany) Tx() WebhookWorkerManyTxResult {
return v
}
+type webhookWorkerRequestToWebhookWorkerFindUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) with() {}
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) webhookWorkerRequestModel() {}
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) webhookWorkerRequestRelation() {}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) With(params ...WebhookWorkerRelationWith) webhookWorkerRequestToWebhookWorkerFindUnique {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) Select(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestToWebhookWorkerFindUnique {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) Omit(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestToWebhookWorkerFindUnique {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerRequestOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) Exec(ctx context.Context) (
+ *WebhookWorkerRequestModel,
+ error,
+) {
+ var v *WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) ExecInner(ctx context.Context) (
+ *InnerWebhookWorkerRequest,
+ error,
+) {
+ var v *InnerWebhookWorkerRequest
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) Update(params ...WebhookWorkerRequestSetParam) webhookWorkerRequestToWebhookWorkerUpdateUnique {
+ r.query.Operation = "mutation"
+ r.query.Method = "updateOne"
+ r.query.Model = "WebhookWorkerRequest"
+
+ var v webhookWorkerRequestToWebhookWorkerUpdateUnique
+ v.query = r.query
+ var fields []builder.Field
+ for _, q := range params {
+
+ field := q.field()
+
+ _, isJson := field.Value.(types.JSON)
+ if field.Value != nil && !isJson {
+ v := field.Value
+ field.Fields = []builder.Field{
+ {
+ Name: "set",
+ Value: v,
+ },
+ }
+
+ field.Value = nil
+ }
+
+ fields = append(fields, field)
+ }
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "data",
+ Fields: fields,
+ })
+ return v
+}
+
+type webhookWorkerRequestToWebhookWorkerUpdateUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerUpdateUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerUpdateUnique) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestToWebhookWorkerUpdateUnique) Exec(ctx context.Context) (*WebhookWorkerRequestModel, error) {
+ var v WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerUpdateUnique) Tx() WebhookWorkerRequestUniqueTxResult {
+ v := newWebhookWorkerRequestUniqueTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindUnique) Delete() webhookWorkerRequestToWebhookWorkerDeleteUnique {
+ var v webhookWorkerRequestToWebhookWorkerDeleteUnique
+ v.query = r.query
+ v.query.Operation = "mutation"
+ v.query.Method = "deleteOne"
+ v.query.Model = "WebhookWorkerRequest"
+
+ return v
+}
+
+type webhookWorkerRequestToWebhookWorkerDeleteUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerDeleteUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (p webhookWorkerRequestToWebhookWorkerDeleteUnique) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestToWebhookWorkerDeleteUnique) Exec(ctx context.Context) (*WebhookWorkerRequestModel, error) {
+ var v WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerDeleteUnique) Tx() WebhookWorkerRequestUniqueTxResult {
+ v := newWebhookWorkerRequestUniqueTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+type webhookWorkerRequestToWebhookWorkerFindFirst struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) with() {}
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) webhookWorkerRequestModel() {}
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) webhookWorkerRequestRelation() {}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) With(params ...WebhookWorkerRelationWith) webhookWorkerRequestToWebhookWorkerFindFirst {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) Select(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestToWebhookWorkerFindFirst {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) Omit(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestToWebhookWorkerFindFirst {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerRequestOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) OrderBy(params ...WebhookWorkerOrderByParam) webhookWorkerRequestToWebhookWorkerFindFirst {
+ var fields []builder.Field
+
+ for _, param := range params {
+ fields = append(fields, builder.Field{
+ Name: param.field().Name,
+ Value: param.field().Value,
+ Fields: param.field().Fields,
+ })
+ }
+
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "orderBy",
+ Fields: fields,
+ WrapList: true,
+ })
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) Skip(count int) webhookWorkerRequestToWebhookWorkerFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "skip",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) Take(count int) webhookWorkerRequestToWebhookWorkerFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "take",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) Cursor(cursor WebhookWorkerRequestCursorParam) webhookWorkerRequestToWebhookWorkerFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "cursor",
+ Fields: []builder.Field{cursor.field()},
+ })
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) Exec(ctx context.Context) (
+ *WebhookWorkerRequestModel,
+ error,
+) {
+ var v *WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindFirst) ExecInner(ctx context.Context) (
+ *InnerWebhookWorkerRequest,
+ error,
+) {
+ var v *InnerWebhookWorkerRequest
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+type webhookWorkerRequestToWebhookWorkerFindMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) with() {}
+func (r webhookWorkerRequestToWebhookWorkerFindMany) webhookWorkerRequestModel() {}
+func (r webhookWorkerRequestToWebhookWorkerFindMany) webhookWorkerRequestRelation() {}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) With(params ...WebhookWorkerRelationWith) webhookWorkerRequestToWebhookWorkerFindMany {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) Select(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestToWebhookWorkerFindMany {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) Omit(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestToWebhookWorkerFindMany {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerRequestOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) OrderBy(params ...WebhookWorkerOrderByParam) webhookWorkerRequestToWebhookWorkerFindMany {
+ var fields []builder.Field
+
+ for _, param := range params {
+ fields = append(fields, builder.Field{
+ Name: param.field().Name,
+ Value: param.field().Value,
+ Fields: param.field().Fields,
+ })
+ }
+
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "orderBy",
+ Fields: fields,
+ WrapList: true,
+ })
+
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) Skip(count int) webhookWorkerRequestToWebhookWorkerFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "skip",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) Take(count int) webhookWorkerRequestToWebhookWorkerFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "take",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) Cursor(cursor WebhookWorkerRequestCursorParam) webhookWorkerRequestToWebhookWorkerFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "cursor",
+ Fields: []builder.Field{cursor.field()},
+ })
+ return r
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) Exec(ctx context.Context) (
+ []WebhookWorkerRequestModel,
+ error,
+) {
+ var v []WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) ExecInner(ctx context.Context) (
+ []InnerWebhookWorkerRequest,
+ error,
+) {
+ var v []InnerWebhookWorkerRequest
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) Update(params ...WebhookWorkerRequestSetParam) webhookWorkerRequestToWebhookWorkerUpdateMany {
+ r.query.Operation = "mutation"
+ r.query.Method = "updateMany"
+ r.query.Model = "WebhookWorkerRequest"
+
+ r.query.Outputs = countOutput
+
+ var v webhookWorkerRequestToWebhookWorkerUpdateMany
+ v.query = r.query
+ var fields []builder.Field
+ for _, q := range params {
+
+ field := q.field()
+
+ _, isJson := field.Value.(types.JSON)
+ if field.Value != nil && !isJson {
+ v := field.Value
+ field.Fields = []builder.Field{
+ {
+ Name: "set",
+ Value: v,
+ },
+ }
+
+ field.Value = nil
+ }
+
+ fields = append(fields, field)
+ }
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "data",
+ Fields: fields,
+ })
+ return v
+}
+
+type webhookWorkerRequestToWebhookWorkerUpdateMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerUpdateMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerUpdateMany) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestToWebhookWorkerUpdateMany) Exec(ctx context.Context) (*BatchResult, error) {
+ var v BatchResult
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerUpdateMany) Tx() WebhookWorkerRequestManyTxResult {
+ v := newWebhookWorkerRequestManyTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+func (r webhookWorkerRequestToWebhookWorkerFindMany) Delete() webhookWorkerRequestToWebhookWorkerDeleteMany {
+ var v webhookWorkerRequestToWebhookWorkerDeleteMany
+ v.query = r.query
+ v.query.Operation = "mutation"
+ v.query.Method = "deleteMany"
+ v.query.Model = "WebhookWorkerRequest"
+
+ v.query.Outputs = countOutput
+
+ return v
+}
+
+type webhookWorkerRequestToWebhookWorkerDeleteMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestToWebhookWorkerDeleteMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (p webhookWorkerRequestToWebhookWorkerDeleteMany) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestToWebhookWorkerDeleteMany) Exec(ctx context.Context) (*BatchResult, error) {
+ var v BatchResult
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestToWebhookWorkerDeleteMany) Tx() WebhookWorkerRequestManyTxResult {
+ v := newWebhookWorkerRequestManyTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+type webhookWorkerRequestFindUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestFindUnique) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestFindUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestFindUnique) with() {}
+func (r webhookWorkerRequestFindUnique) webhookWorkerRequestModel() {}
+func (r webhookWorkerRequestFindUnique) webhookWorkerRequestRelation() {}
+
+func (r webhookWorkerRequestActions) FindUnique(
+ params WebhookWorkerRequestEqualsUniqueWhereParam,
+) webhookWorkerRequestFindUnique {
+ var v webhookWorkerRequestFindUnique
+ v.query = builder.NewQuery()
+ v.query.Engine = r.client
+
+ v.query.Operation = "query"
+
+ v.query.Method = "findUnique"
+
+ v.query.Model = "WebhookWorkerRequest"
+ v.query.Outputs = webhookWorkerRequestOutput
+
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "where",
+ Fields: builder.TransformEquals([]builder.Field{params.field()}),
+ })
+
+ return v
+}
+
+func (r webhookWorkerRequestFindUnique) With(params ...WebhookWorkerRequestRelationWith) webhookWorkerRequestFindUnique {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerRequestFindUnique) Select(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestFindUnique {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestFindUnique) Omit(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestFindUnique {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerRequestOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestFindUnique) Exec(ctx context.Context) (
+ *WebhookWorkerRequestModel,
+ error,
+) {
+ var v *WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestFindUnique) ExecInner(ctx context.Context) (
+ *InnerWebhookWorkerRequest,
+ error,
+) {
+ var v *InnerWebhookWorkerRequest
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestFindUnique) Update(params ...WebhookWorkerRequestSetParam) webhookWorkerRequestUpdateUnique {
+ r.query.Operation = "mutation"
+ r.query.Method = "updateOne"
+ r.query.Model = "WebhookWorkerRequest"
+
+ var v webhookWorkerRequestUpdateUnique
+ v.query = r.query
+ var fields []builder.Field
+ for _, q := range params {
+
+ field := q.field()
+
+ _, isJson := field.Value.(types.JSON)
+ if field.Value != nil && !isJson {
+ v := field.Value
+ field.Fields = []builder.Field{
+ {
+ Name: "set",
+ Value: v,
+ },
+ }
+
+ field.Value = nil
+ }
+
+ fields = append(fields, field)
+ }
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "data",
+ Fields: fields,
+ })
+ return v
+}
+
+type webhookWorkerRequestUpdateUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestUpdateUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestUpdateUnique) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestUpdateUnique) Exec(ctx context.Context) (*WebhookWorkerRequestModel, error) {
+ var v WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestUpdateUnique) Tx() WebhookWorkerRequestUniqueTxResult {
+ v := newWebhookWorkerRequestUniqueTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+func (r webhookWorkerRequestFindUnique) Delete() webhookWorkerRequestDeleteUnique {
+ var v webhookWorkerRequestDeleteUnique
+ v.query = r.query
+ v.query.Operation = "mutation"
+ v.query.Method = "deleteOne"
+ v.query.Model = "WebhookWorkerRequest"
+
+ return v
+}
+
+type webhookWorkerRequestDeleteUnique struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestDeleteUnique) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (p webhookWorkerRequestDeleteUnique) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestDeleteUnique) Exec(ctx context.Context) (*WebhookWorkerRequestModel, error) {
+ var v WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestDeleteUnique) Tx() WebhookWorkerRequestUniqueTxResult {
+ v := newWebhookWorkerRequestUniqueTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+type webhookWorkerRequestFindFirst struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestFindFirst) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestFindFirst) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestFindFirst) with() {}
+func (r webhookWorkerRequestFindFirst) webhookWorkerRequestModel() {}
+func (r webhookWorkerRequestFindFirst) webhookWorkerRequestRelation() {}
+
+func (r webhookWorkerRequestActions) FindFirst(
+ params ...WebhookWorkerRequestWhereParam,
+) webhookWorkerRequestFindFirst {
+ var v webhookWorkerRequestFindFirst
+ v.query = builder.NewQuery()
+ v.query.Engine = r.client
+
+ v.query.Operation = "query"
+
+ v.query.Method = "findFirst"
+
+ v.query.Model = "WebhookWorkerRequest"
+ v.query.Outputs = webhookWorkerRequestOutput
+
+ var where []builder.Field
+ for _, q := range params {
+ if query := q.getQuery(); query.Operation != "" {
+ v.query.Outputs = append(v.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ } else {
+ where = append(where, q.field())
+ }
+ }
+
+ if len(where) > 0 {
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "where",
+ Fields: where,
+ })
+ }
+
+ return v
+}
+
+func (r webhookWorkerRequestFindFirst) With(params ...WebhookWorkerRequestRelationWith) webhookWorkerRequestFindFirst {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerRequestFindFirst) Select(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestFindFirst {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestFindFirst) Omit(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestFindFirst {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerRequestOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestFindFirst) OrderBy(params ...WebhookWorkerRequestOrderByParam) webhookWorkerRequestFindFirst {
+ var fields []builder.Field
+
+ for _, param := range params {
+ fields = append(fields, builder.Field{
+ Name: param.field().Name,
+ Value: param.field().Value,
+ Fields: param.field().Fields,
+ })
+ }
+
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "orderBy",
+ Fields: fields,
+ WrapList: true,
+ })
+
+ return r
+}
+
+func (r webhookWorkerRequestFindFirst) Skip(count int) webhookWorkerRequestFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "skip",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerRequestFindFirst) Take(count int) webhookWorkerRequestFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "take",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerRequestFindFirst) Cursor(cursor WebhookWorkerRequestCursorParam) webhookWorkerRequestFindFirst {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "cursor",
+ Fields: []builder.Field{cursor.field()},
+ })
+ return r
+}
+
+func (r webhookWorkerRequestFindFirst) Exec(ctx context.Context) (
+ *WebhookWorkerRequestModel,
+ error,
+) {
+ var v *WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestFindFirst) ExecInner(ctx context.Context) (
+ *InnerWebhookWorkerRequest,
+ error,
+) {
+ var v *InnerWebhookWorkerRequest
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ if v == nil {
+ return nil, ErrNotFound
+ }
+
+ return v, nil
+}
+
+type webhookWorkerRequestFindMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestFindMany) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestFindMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestFindMany) with() {}
+func (r webhookWorkerRequestFindMany) webhookWorkerRequestModel() {}
+func (r webhookWorkerRequestFindMany) webhookWorkerRequestRelation() {}
+
+func (r webhookWorkerRequestActions) FindMany(
+ params ...WebhookWorkerRequestWhereParam,
+) webhookWorkerRequestFindMany {
+ var v webhookWorkerRequestFindMany
+ v.query = builder.NewQuery()
+ v.query.Engine = r.client
+
+ v.query.Operation = "query"
+
+ v.query.Method = "findMany"
+
+ v.query.Model = "WebhookWorkerRequest"
+ v.query.Outputs = webhookWorkerRequestOutput
+
+ var where []builder.Field
+ for _, q := range params {
+ if query := q.getQuery(); query.Operation != "" {
+ v.query.Outputs = append(v.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ } else {
+ where = append(where, q.field())
+ }
+ }
+
+ if len(where) > 0 {
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "where",
+ Fields: where,
+ })
+ }
+
+ return v
+}
+
+func (r webhookWorkerRequestFindMany) With(params ...WebhookWorkerRequestRelationWith) webhookWorkerRequestFindMany {
+ for _, q := range params {
+ query := q.getQuery()
+ r.query.Outputs = append(r.query.Outputs, builder.Output{
+ Name: query.Method,
+ Inputs: query.Inputs,
+ Outputs: query.Outputs,
+ })
+ }
+
+ return r
+}
+
+func (r webhookWorkerRequestFindMany) Select(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestFindMany {
+ var outputs []builder.Output
+
+ for _, param := range params {
+ outputs = append(outputs, builder.Output{
+ Name: string(param),
+ })
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestFindMany) Omit(params ...webhookWorkerRequestPrismaFields) webhookWorkerRequestFindMany {
+ var outputs []builder.Output
+
+ var raw []string
+ for _, param := range params {
+ raw = append(raw, string(param))
+ }
+
+ for _, output := range webhookWorkerRequestOutput {
+ if !slices.Contains(raw, output.Name) {
+ outputs = append(outputs, output)
+ }
+ }
+
+ r.query.Outputs = outputs
+
+ return r
+}
+
+func (r webhookWorkerRequestFindMany) OrderBy(params ...WebhookWorkerRequestOrderByParam) webhookWorkerRequestFindMany {
+ var fields []builder.Field
+
+ for _, param := range params {
+ fields = append(fields, builder.Field{
+ Name: param.field().Name,
+ Value: param.field().Value,
+ Fields: param.field().Fields,
+ })
+ }
+
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "orderBy",
+ Fields: fields,
+ WrapList: true,
+ })
+
+ return r
+}
+
+func (r webhookWorkerRequestFindMany) Skip(count int) webhookWorkerRequestFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "skip",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerRequestFindMany) Take(count int) webhookWorkerRequestFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "take",
+ Value: count,
+ })
+ return r
+}
+
+func (r webhookWorkerRequestFindMany) Cursor(cursor WebhookWorkerRequestCursorParam) webhookWorkerRequestFindMany {
+ r.query.Inputs = append(r.query.Inputs, builder.Input{
+ Name: "cursor",
+ Fields: []builder.Field{cursor.field()},
+ })
+ return r
+}
+
+func (r webhookWorkerRequestFindMany) Exec(ctx context.Context) (
+ []WebhookWorkerRequestModel,
+ error,
+) {
+ var v []WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestFindMany) ExecInner(ctx context.Context) (
+ []InnerWebhookWorkerRequest,
+ error,
+) {
+ var v []InnerWebhookWorkerRequest
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+
+ return v, nil
+}
+
+func (r webhookWorkerRequestFindMany) Update(params ...WebhookWorkerRequestSetParam) webhookWorkerRequestUpdateMany {
+ r.query.Operation = "mutation"
+ r.query.Method = "updateMany"
+ r.query.Model = "WebhookWorkerRequest"
+
+ r.query.Outputs = countOutput
+
+ var v webhookWorkerRequestUpdateMany
+ v.query = r.query
+ var fields []builder.Field
+ for _, q := range params {
+
+ field := q.field()
+
+ _, isJson := field.Value.(types.JSON)
+ if field.Value != nil && !isJson {
+ v := field.Value
+ field.Fields = []builder.Field{
+ {
+ Name: "set",
+ Value: v,
+ },
+ }
+
+ field.Value = nil
+ }
+
+ fields = append(fields, field)
+ }
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "data",
+ Fields: fields,
+ })
+ return v
+}
+
+type webhookWorkerRequestUpdateMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestUpdateMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestUpdateMany) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestUpdateMany) Exec(ctx context.Context) (*BatchResult, error) {
+ var v BatchResult
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestUpdateMany) Tx() WebhookWorkerRequestManyTxResult {
+ v := newWebhookWorkerRequestManyTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
+func (r webhookWorkerRequestFindMany) Delete() webhookWorkerRequestDeleteMany {
+ var v webhookWorkerRequestDeleteMany
+ v.query = r.query
+ v.query.Operation = "mutation"
+ v.query.Method = "deleteMany"
+ v.query.Model = "WebhookWorkerRequest"
+
+ v.query.Outputs = countOutput
+
+ return v
+}
+
+type webhookWorkerRequestDeleteMany struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestDeleteMany) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (p webhookWorkerRequestDeleteMany) webhookWorkerRequestModel() {}
+
+func (r webhookWorkerRequestDeleteMany) Exec(ctx context.Context) (*BatchResult, error) {
+ var v BatchResult
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestDeleteMany) Tx() WebhookWorkerRequestManyTxResult {
+ v := newWebhookWorkerRequestManyTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
type webhookWorkerWorkflowToWebhookWorkerFindUnique struct {
query builder.Query
}
@@ -399022,6 +403610,54 @@ func (r WebhookWorkerManyTxResult) Result() (v *BatchResult) {
return v
}
+func newWebhookWorkerRequestUniqueTxResult() WebhookWorkerRequestUniqueTxResult {
+ return WebhookWorkerRequestUniqueTxResult{
+ result: &transaction.Result{},
+ }
+}
+
+type WebhookWorkerRequestUniqueTxResult struct {
+ query builder.Query
+ result *transaction.Result
+}
+
+func (p WebhookWorkerRequestUniqueTxResult) ExtractQuery() builder.Query {
+ return p.query
+}
+
+func (p WebhookWorkerRequestUniqueTxResult) IsTx() {}
+
+func (r WebhookWorkerRequestUniqueTxResult) Result() (v *WebhookWorkerRequestModel) {
+ if err := r.result.Get(r.query.TxResult, &v); err != nil {
+ panic(err)
+ }
+ return v
+}
+
+func newWebhookWorkerRequestManyTxResult() WebhookWorkerRequestManyTxResult {
+ return WebhookWorkerRequestManyTxResult{
+ result: &transaction.Result{},
+ }
+}
+
+type WebhookWorkerRequestManyTxResult struct {
+ query builder.Query
+ result *transaction.Result
+}
+
+func (p WebhookWorkerRequestManyTxResult) ExtractQuery() builder.Query {
+ return p.query
+}
+
+func (p WebhookWorkerRequestManyTxResult) IsTx() {}
+
+func (r WebhookWorkerRequestManyTxResult) Result() (v *BatchResult) {
+ if err := r.result.Get(r.query.TxResult, &v); err != nil {
+ panic(err)
+ }
+ return v
+}
+
func newWebhookWorkerWorkflowUniqueTxResult() WebhookWorkerWorkflowUniqueTxResult {
return WebhookWorkerWorkflowUniqueTxResult{
result: &transaction.Result{},
@@ -402036,6 +406672,120 @@ func (r webhookWorkerUpsertOne) Tx() WebhookWorkerUniqueTxResult {
return v
}
+type webhookWorkerRequestUpsertOne struct {
+ query builder.Query
+}
+
+func (r webhookWorkerRequestUpsertOne) getQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestUpsertOne) ExtractQuery() builder.Query {
+ return r.query
+}
+
+func (r webhookWorkerRequestUpsertOne) with() {}
+func (r webhookWorkerRequestUpsertOne) webhookWorkerRequestModel() {}
+func (r webhookWorkerRequestUpsertOne) webhookWorkerRequestRelation() {}
+
+func (r webhookWorkerRequestActions) UpsertOne(
+ params WebhookWorkerRequestEqualsUniqueWhereParam,
+) webhookWorkerRequestUpsertOne {
+ var v webhookWorkerRequestUpsertOne
+ v.query = builder.NewQuery()
+ v.query.Engine = r.client
+
+ v.query.Operation = "mutation"
+ v.query.Method = "upsertOne"
+ v.query.Model = "WebhookWorkerRequest"
+ v.query.Outputs = webhookWorkerRequestOutput
+
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "where",
+ Fields: builder.TransformEquals([]builder.Field{params.field()}),
+ })
+
+ return v
+}
+
+func (r webhookWorkerRequestUpsertOne) Create(
+
+ _webhookWorker WebhookWorkerRequestWithPrismaWebhookWorkerSetParam,
+ _method WebhookWorkerRequestWithPrismaMethodSetParam,
+ _statusCode WebhookWorkerRequestWithPrismaStatusCodeSetParam,
+
+ optional ...WebhookWorkerRequestSetParam,
+) webhookWorkerRequestUpsertOne {
+ var v webhookWorkerRequestUpsertOne
+ v.query = r.query
+
+ var fields []builder.Field
+ fields = append(fields, _webhookWorker.field())
+ fields = append(fields, _method.field())
+ fields = append(fields, _statusCode.field())
+
+ for _, q := range optional {
+ fields = append(fields, q.field())
+ }
+
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "create",
+ Fields: fields,
+ })
+
+ return v
+}
+
+func (r webhookWorkerRequestUpsertOne) Update(
+ params ...WebhookWorkerRequestSetParam,
+) webhookWorkerRequestUpsertOne {
+ var v webhookWorkerRequestUpsertOne
+ v.query = r.query
+
+ var fields []builder.Field
+ for _, q := range params {
+
+ field := q.field()
+
+ _, isJson := field.Value.(types.JSON)
+ if field.Value != nil && !isJson {
+ v := field.Value
+ field.Fields = []builder.Field{
+ {
+ Name: "set",
+ Value: v,
+ },
+ }
+
+ field.Value = nil
+ }
+
+ fields = append(fields, field)
+ }
+
+ v.query.Inputs = append(v.query.Inputs, builder.Input{
+ Name: "update",
+ Fields: fields,
+ })
+
+ return v
+}
+
+func (r webhookWorkerRequestUpsertOne) Exec(ctx context.Context) (*WebhookWorkerRequestModel, error) {
+ var v WebhookWorkerRequestModel
+ if err := r.query.Exec(ctx, &v); err != nil {
+ return nil, err
+ }
+ return &v, nil
+}
+
+func (r webhookWorkerRequestUpsertOne) Tx() WebhookWorkerRequestUniqueTxResult {
+ v := newWebhookWorkerRequestUniqueTxResult()
+ v.query = r.query
+ v.query.TxResult = make(chan []byte, 1)
+ return v
+}
+
type webhookWorkerWorkflowUpsertOne struct {
query builder.Query
}
diff --git a/pkg/repository/prisma/dbsqlc/models.go b/pkg/repository/prisma/dbsqlc/models.go
index 29487d9ac..ca071ef97 100644
--- a/pkg/repository/prisma/dbsqlc/models.go
+++ b/pkg/repository/prisma/dbsqlc/models.go
@@ -588,6 +588,49 @@ func (ns NullVcsProvider) Value() (driver.Value, error) {
return string(ns.VcsProvider), nil
}
+type WebhookWorkerRequestMethod string
+
+const (
+ WebhookWorkerRequestMethodGET WebhookWorkerRequestMethod = "GET"
+ WebhookWorkerRequestMethodPOST WebhookWorkerRequestMethod = "POST"
+ WebhookWorkerRequestMethodPUT WebhookWorkerRequestMethod = "PUT"
+)
+
+func (e *WebhookWorkerRequestMethod) Scan(src interface{}) error {
+ switch s := src.(type) {
+ case []byte:
+ *e = WebhookWorkerRequestMethod(s)
+ case string:
+ *e = WebhookWorkerRequestMethod(s)
+ default:
+ return fmt.Errorf("unsupported scan type for WebhookWorkerRequestMethod: %T", src)
+ }
+ return nil
+}
+
+type NullWebhookWorkerRequestMethod struct {
+ WebhookWorkerRequestMethod WebhookWorkerRequestMethod `json:"WebhookWorkerRequestMethod"`
+ Valid bool `json:"valid"` // Valid is true if WebhookWorkerRequestMethod is not NULL
+}
+
+// Scan implements the Scanner interface.
+func (ns *NullWebhookWorkerRequestMethod) Scan(value interface{}) error {
+ if value == nil {
+ ns.WebhookWorkerRequestMethod, ns.Valid = "", false
+ return nil
+ }
+ ns.Valid = true
+ return ns.WebhookWorkerRequestMethod.Scan(value)
+}
+
+// Value implements the driver Valuer interface.
+func (ns NullWebhookWorkerRequestMethod) Value() (driver.Value, error) {
+ if !ns.Valid {
+ return nil, nil
+ }
+ return string(ns.WebhookWorkerRequestMethod), nil
+}
+
type WorkerLabelComparator string
const (
@@ -1235,6 +1278,14 @@ type WebhookWorker struct {
TenantId pgtype.UUID `json:"tenantId"`
}
+type WebhookWorkerRequest struct {
+ ID pgtype.UUID `json:"id"`
+ CreatedAt pgtype.Timestamp `json:"createdAt"`
+ WebhookWorkerId pgtype.UUID `json:"webhookWorkerId"`
+ Method WebhookWorkerRequestMethod `json:"method"`
+ StatusCode int32 `json:"statusCode"`
+}
+
type WebhookWorkerWorkflow struct {
ID pgtype.UUID `json:"id"`
WebhookWorkerId pgtype.UUID `json:"webhookWorkerId"`
diff --git a/pkg/repository/prisma/dbsqlc/schema.sql b/pkg/repository/prisma/dbsqlc/schema.sql
index 9feb39fbe..f86dfa25e 100644
--- a/pkg/repository/prisma/dbsqlc/schema.sql
+++ b/pkg/repository/prisma/dbsqlc/schema.sql
@@ -37,6 +37,9 @@ CREATE TYPE "TenantResourceLimitAlertType" AS ENUM ('Alarm', 'Exhausted');
-- CreateEnum
CREATE TYPE "VcsProvider" AS ENUM ('GITHUB');
+-- CreateEnum
+CREATE TYPE "WebhookWorkerRequestMethod" AS ENUM ('GET', 'POST', 'PUT');
+
-- CreateEnum
CREATE TYPE "WorkerLabelComparator" AS ENUM ('EQUAL', 'NOT_EQUAL', 'GREATER_THAN', 'GREATER_THAN_OR_EQUAL', 'LESS_THAN', 'LESS_THAN_OR_EQUAL');
@@ -608,6 +611,17 @@ CREATE TABLE "WebhookWorker" (
CONSTRAINT "WebhookWorker_pkey" PRIMARY KEY ("id")
);
+-- CreateTable
+CREATE TABLE "WebhookWorkerRequest" (
+ "id" UUID NOT NULL,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "webhookWorkerId" UUID NOT NULL,
+ "method" "WebhookWorkerRequestMethod" NOT NULL,
+ "statusCode" INTEGER NOT NULL,
+
+ CONSTRAINT "WebhookWorkerRequest_pkey" PRIMARY KEY ("id")
+);
+
-- CreateTable
CREATE TABLE "WebhookWorkerWorkflow" (
"id" UUID NOT NULL,
@@ -1098,6 +1112,9 @@ CREATE UNIQUE INDEX "WebhookWorker_id_key" ON "WebhookWorker"("id" ASC);
-- CreateIndex
CREATE UNIQUE INDEX "WebhookWorker_url_key" ON "WebhookWorker"("url" ASC);
+-- CreateIndex
+CREATE UNIQUE INDEX "WebhookWorkerRequest_id_key" ON "WebhookWorkerRequest"("id" ASC);
+
-- CreateIndex
CREATE UNIQUE INDEX "WebhookWorkerWorkflow_id_key" ON "WebhookWorkerWorkflow"("id" ASC);
@@ -1428,6 +1445,9 @@ ALTER TABLE "WebhookWorker" ADD CONSTRAINT "WebhookWorker_tenantId_fkey" FOREIGN
-- AddForeignKey
ALTER TABLE "WebhookWorker" ADD CONSTRAINT "WebhookWorker_tokenId_fkey" FOREIGN KEY ("tokenId") REFERENCES "APIToken"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+-- AddForeignKey
+ALTER TABLE "WebhookWorkerRequest" ADD CONSTRAINT "WebhookWorkerRequest_webhookWorkerId_fkey" FOREIGN KEY ("webhookWorkerId") REFERENCES "WebhookWorker"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+
-- AddForeignKey
ALTER TABLE "WebhookWorkerWorkflow" ADD CONSTRAINT "WebhookWorkerWorkflow_webhookWorkerId_fkey" FOREIGN KEY ("webhookWorkerId") REFERENCES "WebhookWorker"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/pkg/repository/prisma/dbsqlc/webhook_workers.sql b/pkg/repository/prisma/dbsqlc/webhook_workers.sql
index a4d57ad4d..ca6007491 100644
--- a/pkg/repository/prisma/dbsqlc/webhook_workers.sql
+++ b/pkg/repository/prisma/dbsqlc/webhook_workers.sql
@@ -24,8 +24,46 @@ SELECT *
FROM "WebhookWorker"
WHERE "tenantId" = @tenantId::uuid AND "deleted" = false;
+-- name: ListWebhookWorkerRequests :many
+SELECT *
+FROM "WebhookWorkerRequest"
+WHERE "webhookWorkerId" = @webhookWorkerId::uuid
+ORDER BY "createdAt" DESC
+LIMIT 50;
--- name: UpsertWebhookWorker :one
+-- name: InsertWebhookWorkerRequest :exec
+WITH delete_old AS (
+ -- Delete old requests
+ DELETE FROM "WebhookWorkerRequest"
+ WHERE "webhookWorkerId" = @webhookWorkerId::uuid
+ AND "createdAt" < NOW() - INTERVAL '15 minutes'
+)
+INSERT INTO "WebhookWorkerRequest" (
+ "id",
+ "createdAt",
+ "webhookWorkerId",
+ "method",
+ "statusCode"
+) VALUES (
+ gen_random_uuid(),
+ CURRENT_TIMESTAMP,
+ @webhookWorkerId::uuid,
+ @method::"WebhookWorkerRequestMethod",
+ @statusCode::integer
+);
+
+-- name: UpdateWebhookWorkerToken :one
+UPDATE "WebhookWorker"
+SET
+ "updatedAt" = CURRENT_TIMESTAMP,
+ "tokenValue" = COALESCE(sqlc.narg('tokenValue')::text, "tokenValue"),
+ "tokenId" = COALESCE(sqlc.narg('tokenId')::uuid, "tokenId")
+WHERE
+ "id" = @id::uuid
+ AND "tenantId" = @tenantId::uuid
+RETURNING *;
+
+-- name: CreateWebhookWorker :one
INSERT INTO "WebhookWorker" (
"id",
"createdAt",
@@ -50,20 +88,19 @@ VALUES (
sqlc.narg('tokenValue')::text,
coalesce(sqlc.narg('deleted')::boolean, false)
)
-ON CONFLICT ("url") DO
-UPDATE
-SET
- "tokenId" = coalesce(sqlc.narg('tokenId')::uuid, excluded."tokenId"),
- "tokenValue" = coalesce(sqlc.narg('tokenValue')::text, excluded."tokenValue"),
- "name" = coalesce(sqlc.narg('name')::text, excluded."name"),
- "secret" = coalesce(sqlc.narg('secret')::text, excluded."secret"),
- "url" = coalesce(sqlc.narg('url')::text, excluded."url"),
- "deleted" = coalesce(sqlc.narg('deleted')::boolean, excluded."deleted")
RETURNING *;
--- name: DeleteWebhookWorker :exec
+-- name: SoftDeleteWebhookWorker :exec
UPDATE "WebhookWorker"
-SET "deleted" = true
+SET
+ "deleted" = true,
+ "updatedAt" = CURRENT_TIMESTAMP
WHERE
"id" = @id::uuid
- and "tenantId" = @tenantId::uuid;
+ AND "tenantId" = @tenantId::uuid;
+
+-- name: HardDeleteWebhookWorker :exec
+DELETE FROM "WebhookWorker"
+WHERE
+ "id" = @id::uuid
+ AND "tenantId" = @tenantId::uuid;
diff --git a/pkg/repository/prisma/dbsqlc/webhook_workers.sql.go b/pkg/repository/prisma/dbsqlc/webhook_workers.sql.go
index 157ac5f3d..c93c1cdd7 100644
--- a/pkg/repository/prisma/dbsqlc/webhook_workers.sql.go
+++ b/pkg/repository/prisma/dbsqlc/webhook_workers.sql.go
@@ -11,21 +11,117 @@ import (
"github.com/jackc/pgx/v5/pgtype"
)
-const deleteWebhookWorker = `-- name: DeleteWebhookWorker :exec
-UPDATE "WebhookWorker"
-SET "deleted" = true
-WHERE
- "id" = $1::uuid
- and "tenantId" = $2::uuid
+const createWebhookWorker = `-- name: CreateWebhookWorker :one
+INSERT INTO "WebhookWorker" (
+ "id",
+ "createdAt",
+ "updatedAt",
+ "name",
+ "secret",
+ "url",
+ "tenantId",
+ "tokenId",
+ "tokenValue",
+ "deleted"
+)
+VALUES (
+ gen_random_uuid(),
+ CURRENT_TIMESTAMP,
+ CURRENT_TIMESTAMP,
+ $1::text,
+ $2::text,
+ $3::text,
+ $4::uuid,
+ $5::uuid,
+ $6::text,
+ coalesce($7::boolean, false)
+)
+RETURNING id, "createdAt", "updatedAt", name, secret, url, "tokenValue", deleted, "tokenId", "tenantId"
`
-type DeleteWebhookWorkerParams struct {
+type CreateWebhookWorkerParams struct {
+ Name string `json:"name"`
+ Secret string `json:"secret"`
+ Url string `json:"url"`
+ Tenantid pgtype.UUID `json:"tenantid"`
+ TokenId pgtype.UUID `json:"tokenId"`
+ TokenValue pgtype.Text `json:"tokenValue"`
+ Deleted pgtype.Bool `json:"deleted"`
+}
+
+func (q *Queries) CreateWebhookWorker(ctx context.Context, db DBTX, arg CreateWebhookWorkerParams) (*WebhookWorker, error) {
+ row := db.QueryRow(ctx, createWebhookWorker,
+ arg.Name,
+ arg.Secret,
+ arg.Url,
+ arg.Tenantid,
+ arg.TokenId,
+ arg.TokenValue,
+ arg.Deleted,
+ )
+ var i WebhookWorker
+ err := row.Scan(
+ &i.ID,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.Name,
+ &i.Secret,
+ &i.Url,
+ &i.TokenValue,
+ &i.Deleted,
+ &i.TokenId,
+ &i.TenantId,
+ )
+ return &i, err
+}
+
+const hardDeleteWebhookWorker = `-- name: HardDeleteWebhookWorker :exec
+DELETE FROM "WebhookWorker"
+WHERE
+ "id" = $1::uuid
+ AND "tenantId" = $2::uuid
+`
+
+type HardDeleteWebhookWorkerParams struct {
ID pgtype.UUID `json:"id"`
Tenantid pgtype.UUID `json:"tenantid"`
}
-func (q *Queries) DeleteWebhookWorker(ctx context.Context, db DBTX, arg DeleteWebhookWorkerParams) error {
- _, err := db.Exec(ctx, deleteWebhookWorker, arg.ID, arg.Tenantid)
+func (q *Queries) HardDeleteWebhookWorker(ctx context.Context, db DBTX, arg HardDeleteWebhookWorkerParams) error {
+ _, err := db.Exec(ctx, hardDeleteWebhookWorker, arg.ID, arg.Tenantid)
+ return err
+}
+
+const insertWebhookWorkerRequest = `-- name: InsertWebhookWorkerRequest :exec
+WITH delete_old AS (
+ -- Delete old requests
+ DELETE FROM "WebhookWorkerRequest"
+ WHERE "webhookWorkerId" = $1::uuid
+ AND "createdAt" < NOW() - INTERVAL '15 minutes'
+)
+INSERT INTO "WebhookWorkerRequest" (
+ "id",
+ "createdAt",
+ "webhookWorkerId",
+ "method",
+ "statusCode"
+) VALUES (
+ gen_random_uuid(),
+ CURRENT_TIMESTAMP,
+ $1::uuid,
+ $2::"WebhookWorkerRequestMethod",
+ $3::integer
+)
+`
+
+type InsertWebhookWorkerRequestParams struct {
+ Webhookworkerid pgtype.UUID `json:"webhookworkerid"`
+ Method WebhookWorkerRequestMethod `json:"method"`
+ Statuscode int32 `json:"statuscode"`
+}
+
+func (q *Queries) InsertWebhookWorkerRequest(ctx context.Context, db DBTX, arg InsertWebhookWorkerRequestParams) error {
+ _, err := db.Exec(ctx, insertWebhookWorkerRequest, arg.Webhookworkerid, arg.Method, arg.Statuscode)
return err
}
@@ -66,6 +162,40 @@ func (q *Queries) ListActiveWebhookWorkers(ctx context.Context, db DBTX, tenanti
return items, nil
}
+const listWebhookWorkerRequests = `-- name: ListWebhookWorkerRequests :many
+SELECT id, "createdAt", "webhookWorkerId", method, "statusCode"
+FROM "WebhookWorkerRequest"
+WHERE "webhookWorkerId" = $1::uuid
+ORDER BY "createdAt" DESC
+LIMIT 50
+`
+
+func (q *Queries) ListWebhookWorkerRequests(ctx context.Context, db DBTX, webhookworkerid pgtype.UUID) ([]*WebhookWorkerRequest, error) {
+ rows, err := db.Query(ctx, listWebhookWorkerRequests, webhookworkerid)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []*WebhookWorkerRequest
+ for rows.Next() {
+ var i WebhookWorkerRequest
+ if err := rows.Scan(
+ &i.ID,
+ &i.CreatedAt,
+ &i.WebhookWorkerId,
+ &i.Method,
+ &i.StatusCode,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, &i)
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
const listWebhookWorkersByPartitionId = `-- name: ListWebhookWorkersByPartitionId :many
WITH tenants AS (
SELECT
@@ -119,62 +249,51 @@ func (q *Queries) ListWebhookWorkersByPartitionId(ctx context.Context, db DBTX,
return items, nil
}
-const upsertWebhookWorker = `-- name: UpsertWebhookWorker :one
-INSERT INTO "WebhookWorker" (
- "id",
- "createdAt",
- "updatedAt",
- "name",
- "secret",
- "url",
- "tenantId",
- "tokenId",
- "tokenValue",
- "deleted"
-)
-VALUES (
- gen_random_uuid(),
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- $1::text,
- $2::text,
- $3::text,
- $4::uuid,
- $5::uuid,
- $6::text,
- coalesce($7::boolean, false)
-)
-ON CONFLICT ("url") DO
-UPDATE
+const softDeleteWebhookWorker = `-- name: SoftDeleteWebhookWorker :exec
+UPDATE "WebhookWorker"
SET
- "tokenId" = coalesce($5::uuid, excluded."tokenId"),
- "tokenValue" = coalesce($6::text, excluded."tokenValue"),
- "name" = coalesce($1::text, excluded."name"),
- "secret" = coalesce($2::text, excluded."secret"),
- "url" = coalesce($3::text, excluded."url"),
- "deleted" = coalesce($7::boolean, excluded."deleted")
+ "deleted" = true,
+ "updatedAt" = CURRENT_TIMESTAMP
+WHERE
+ "id" = $1::uuid
+ AND "tenantId" = $2::uuid
+`
+
+type SoftDeleteWebhookWorkerParams struct {
+ ID pgtype.UUID `json:"id"`
+ Tenantid pgtype.UUID `json:"tenantid"`
+}
+
+func (q *Queries) SoftDeleteWebhookWorker(ctx context.Context, db DBTX, arg SoftDeleteWebhookWorkerParams) error {
+ _, err := db.Exec(ctx, softDeleteWebhookWorker, arg.ID, arg.Tenantid)
+ return err
+}
+
+const updateWebhookWorkerToken = `-- name: UpdateWebhookWorkerToken :one
+UPDATE "WebhookWorker"
+SET
+ "updatedAt" = CURRENT_TIMESTAMP,
+ "tokenValue" = COALESCE($1::text, "tokenValue"),
+ "tokenId" = COALESCE($2::uuid, "tokenId")
+WHERE
+ "id" = $3::uuid
+ AND "tenantId" = $4::uuid
RETURNING id, "createdAt", "updatedAt", name, secret, url, "tokenValue", deleted, "tokenId", "tenantId"
`
-type UpsertWebhookWorkerParams struct {
- Name pgtype.Text `json:"name"`
- Secret pgtype.Text `json:"secret"`
- Url pgtype.Text `json:"url"`
- Tenantid pgtype.UUID `json:"tenantid"`
- TokenId pgtype.UUID `json:"tokenId"`
+type UpdateWebhookWorkerTokenParams struct {
TokenValue pgtype.Text `json:"tokenValue"`
- Deleted pgtype.Bool `json:"deleted"`
+ TokenId pgtype.UUID `json:"tokenId"`
+ ID pgtype.UUID `json:"id"`
+ Tenantid pgtype.UUID `json:"tenantid"`
}
-func (q *Queries) UpsertWebhookWorker(ctx context.Context, db DBTX, arg UpsertWebhookWorkerParams) (*WebhookWorker, error) {
- row := db.QueryRow(ctx, upsertWebhookWorker,
- arg.Name,
- arg.Secret,
- arg.Url,
- arg.Tenantid,
- arg.TokenId,
+func (q *Queries) UpdateWebhookWorkerToken(ctx context.Context, db DBTX, arg UpdateWebhookWorkerTokenParams) (*WebhookWorker, error) {
+ row := db.QueryRow(ctx, updateWebhookWorkerToken,
arg.TokenValue,
- arg.Deleted,
+ arg.TokenId,
+ arg.ID,
+ arg.Tenantid,
)
var i WebhookWorker
err := row.Scan(
diff --git a/pkg/repository/prisma/dbsqlc/workers.sql b/pkg/repository/prisma/dbsqlc/workers.sql
index 782595468..b9faa11ec 100644
--- a/pkg/repository/prisma/dbsqlc/workers.sql
+++ b/pkg/repository/prisma/dbsqlc/workers.sql
@@ -2,6 +2,7 @@
SELECT
sqlc.embed(workers),
ww."url" AS "webhookUrl",
+ ww."id" AS "webhookId",
(SELECT COUNT(*) FROM "WorkerSemaphoreSlot" wss WHERE wss."workerId" = workers."id" AND wss."stepRunId" IS NOT NULL) AS "slots"
FROM
"Worker" workers
@@ -32,18 +33,34 @@ WHERE
))
)
GROUP BY
- workers."id", ww."url";
+ workers."id", ww."url", ww."id";
-- name: GetWorkerById :one
SELECT
- sqlc.embed(workers),
- ww."url" AS "webhookUrl"
+ sqlc.embed(w),
+ ww."url" AS "webhookUrl",
+ (
+ SELECT COUNT(*)
+ FROM "WorkerSemaphoreSlot"
+ WHERE "workerId" = w.id AND "stepRunId" IS NOT NULL
+ ) AS filled_slots
FROM
- "Worker" workers
+ "Worker" w
LEFT JOIN
- "WebhookWorker" ww ON workers."webhookId" = ww."id"
+ "WebhookWorker" ww ON w."webhookId" = ww."id"
WHERE
- workers."id" = @id::uuid;
+ w."id" = @id::uuid;
+
+-- name: GetWorkerActionsByWorkerId :many
+SELECT
+ a."actionId" AS actionId
+FROM "Worker" w
+LEFT JOIN "_ActionToWorker" aw ON w.id = aw."B"
+LEFT JOIN "Action" a ON aw."A" = a.id
+WHERE
+ a."tenantId" = @tenantId::uuid AND
+ w."id" = @workerId::uuid;
+
-- name: StubWorkerSemaphoreSlots :exec
INSERT INTO "WorkerSemaphoreSlot" ("id", "workerId")
diff --git a/pkg/repository/prisma/dbsqlc/workers.sql.go b/pkg/repository/prisma/dbsqlc/workers.sql.go
index 9b2e04448..f25a89c9b 100644
--- a/pkg/repository/prisma/dbsqlc/workers.sql.go
+++ b/pkg/repository/prisma/dbsqlc/workers.sql.go
@@ -103,21 +103,63 @@ func (q *Queries) DeleteWorker(ctx context.Context, db DBTX, id pgtype.UUID) (*W
return &i, err
}
+const getWorkerActionsByWorkerId = `-- name: GetWorkerActionsByWorkerId :many
+SELECT
+ a."actionId" AS actionId
+FROM "Worker" w
+LEFT JOIN "_ActionToWorker" aw ON w.id = aw."B"
+LEFT JOIN "Action" a ON aw."A" = a.id
+WHERE
+ a."tenantId" = $1::uuid AND
+ w."id" = $2::uuid
+`
+
+type GetWorkerActionsByWorkerIdParams struct {
+ Tenantid pgtype.UUID `json:"tenantid"`
+ Workerid pgtype.UUID `json:"workerid"`
+}
+
+func (q *Queries) GetWorkerActionsByWorkerId(ctx context.Context, db DBTX, arg GetWorkerActionsByWorkerIdParams) ([]pgtype.Text, error) {
+ rows, err := db.Query(ctx, getWorkerActionsByWorkerId, arg.Tenantid, arg.Workerid)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []pgtype.Text
+ for rows.Next() {
+ var actionid pgtype.Text
+ if err := rows.Scan(&actionid); err != nil {
+ return nil, err
+ }
+ items = append(items, actionid)
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
const getWorkerById = `-- name: GetWorkerById :one
SELECT
- workers.id, workers."createdAt", workers."updatedAt", workers."deletedAt", workers."tenantId", workers."lastHeartbeatAt", workers.name, workers."dispatcherId", workers."maxRuns", workers."isActive", workers."lastListenerEstablished", workers."isPaused", workers.type, workers."webhookId",
- ww."url" AS "webhookUrl"
+ w.id, w."createdAt", w."updatedAt", w."deletedAt", w."tenantId", w."lastHeartbeatAt", w.name, w."dispatcherId", w."maxRuns", w."isActive", w."lastListenerEstablished", w."isPaused", w.type, w."webhookId",
+ ww."url" AS "webhookUrl",
+ (
+ SELECT COUNT(*)
+ FROM "WorkerSemaphoreSlot"
+ WHERE "workerId" = w.id AND "stepRunId" IS NOT NULL
+ ) AS filled_slots
FROM
- "Worker" workers
+ "Worker" w
LEFT JOIN
- "WebhookWorker" ww ON workers."webhookId" = ww."id"
+ "WebhookWorker" ww ON w."webhookId" = ww."id"
WHERE
- workers."id" = $1::uuid
+ w."id" = $1::uuid
`
type GetWorkerByIdRow struct {
- Worker Worker `json:"worker"`
- WebhookUrl pgtype.Text `json:"webhookUrl"`
+ Worker Worker `json:"worker"`
+ WebhookUrl pgtype.Text `json:"webhookUrl"`
+ FilledSlots int64 `json:"filled_slots"`
}
func (q *Queries) GetWorkerById(ctx context.Context, db DBTX, id pgtype.UUID) (*GetWorkerByIdRow, error) {
@@ -139,6 +181,7 @@ func (q *Queries) GetWorkerById(ctx context.Context, db DBTX, id pgtype.UUID) (*
&i.Worker.Type,
&i.Worker.WebhookId,
&i.WebhookUrl,
+ &i.FilledSlots,
)
return &i, err
}
@@ -465,6 +508,7 @@ const listWorkersWithStepCount = `-- name: ListWorkersWithStepCount :many
SELECT
workers.id, workers."createdAt", workers."updatedAt", workers."deletedAt", workers."tenantId", workers."lastHeartbeatAt", workers.name, workers."dispatcherId", workers."maxRuns", workers."isActive", workers."lastListenerEstablished", workers."isPaused", workers.type, workers."webhookId",
ww."url" AS "webhookUrl",
+ ww."id" AS "webhookId",
(SELECT COUNT(*) FROM "WorkerSemaphoreSlot" wss WHERE wss."workerId" = workers."id" AND wss."stepRunId" IS NOT NULL) AS "slots"
FROM
"Worker" workers
@@ -495,7 +539,7 @@ WHERE
))
)
GROUP BY
- workers."id", ww."url"
+ workers."id", ww."url", ww."id"
`
type ListWorkersWithStepCountParams struct {
@@ -508,6 +552,7 @@ type ListWorkersWithStepCountParams struct {
type ListWorkersWithStepCountRow struct {
Worker Worker `json:"worker"`
WebhookUrl pgtype.Text `json:"webhookUrl"`
+ WebhookId pgtype.UUID `json:"webhookId"`
Slots int64 `json:"slots"`
}
@@ -541,6 +586,7 @@ func (q *Queries) ListWorkersWithStepCount(ctx context.Context, db DBTX, arg Lis
&i.Worker.Type,
&i.Worker.WebhookId,
&i.WebhookUrl,
+ &i.WebhookId,
&i.Slots,
); err != nil {
return nil, err
diff --git a/pkg/repository/prisma/webhook_worker.go b/pkg/repository/prisma/webhook_worker.go
index 1fa7b1197..21591f572 100644
--- a/pkg/repository/prisma/webhook_worker.go
+++ b/pkg/repository/prisma/webhook_worker.go
@@ -3,7 +3,9 @@ package prisma
import (
"context"
"fmt"
+ "time"
+ "github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/rs/zerolog"
@@ -43,16 +45,32 @@ func (r *webhookWorkerEngineRepository) ListActiveWebhookWorkers(ctx context.Con
return r.queries.ListActiveWebhookWorkers(ctx, r.pool, sqlchelpers.UUIDFromStr(tenantId))
}
-func (r *webhookWorkerEngineRepository) UpsertWebhookWorker(ctx context.Context, opts *repository.UpsertWebhookWorkerOpts) (*dbsqlc.WebhookWorker, error) {
+func (r *webhookWorkerEngineRepository) ListWebhookWorkerRequests(ctx context.Context, webhookWorkerId string) ([]*dbsqlc.WebhookWorkerRequest, error) {
+ return r.queries.ListWebhookWorkerRequests(ctx, r.pool, sqlchelpers.UUIDFromStr(webhookWorkerId))
+}
+
+func (r *webhookWorkerEngineRepository) InsertWebhookWorkerRequest(ctx context.Context, webhookWorkerId string, method string, statusCode int32) error {
+ ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
+ defer cancel()
+
+ return r.queries.InsertWebhookWorkerRequest(ctx, r.pool, dbsqlc.InsertWebhookWorkerRequestParams{
+ Webhookworkerid: sqlchelpers.UUIDFromStr(webhookWorkerId),
+ Method: dbsqlc.WebhookWorkerRequestMethod(method),
+ Statuscode: statusCode,
+ })
+}
+
+func (r *webhookWorkerEngineRepository) CreateWebhookWorker(ctx context.Context, opts *repository.CreateWebhookWorkerOpts) (*dbsqlc.WebhookWorker, error) {
+
if err := r.v.Validate(opts); err != nil {
return nil, err
}
- params := dbsqlc.UpsertWebhookWorkerParams{
+ params := dbsqlc.CreateWebhookWorkerParams{
Tenantid: sqlchelpers.UUIDFromStr(opts.TenantId),
- Name: sqlchelpers.TextFromStr(opts.Name),
- Secret: sqlchelpers.TextFromStr(opts.Secret),
- Url: sqlchelpers.TextFromStr(opts.URL),
+ Name: opts.Name,
+ Secret: opts.Secret,
+ Url: opts.URL,
}
if opts.Deleted != nil {
@@ -67,11 +85,54 @@ func (r *webhookWorkerEngineRepository) UpsertWebhookWorker(ctx context.Context,
params.TokenValue = sqlchelpers.TextFromStr(*opts.TokenValue)
}
- return r.queries.UpsertWebhookWorker(ctx, r.pool, params)
+ worker, err := r.queries.CreateWebhookWorker(ctx, r.pool, params)
+
+ if err != nil {
+ if pgErr, ok := err.(*pgconn.PgError); ok && pgErr.Code == "23505" {
+ return nil, repository.ErrDuplicateKey
+ }
+ return nil, err
+ }
+
+ return worker, nil
}
-func (r *webhookWorkerEngineRepository) DeleteWebhookWorker(ctx context.Context, id string, tenantId string) error {
- return r.queries.DeleteWebhookWorker(ctx, r.pool, dbsqlc.DeleteWebhookWorkerParams{
+func (r *webhookWorkerEngineRepository) UpdateWebhookWorkerToken(ctx context.Context, id string, tenantId string, opts *repository.UpdateWebhookWorkerTokenOpts) (*dbsqlc.WebhookWorker, error) {
+ if err := r.v.Validate(opts); err != nil {
+ return nil, err
+ }
+
+ params := dbsqlc.UpdateWebhookWorkerTokenParams{
+ ID: sqlchelpers.UUIDFromStr(id),
+ Tenantid: sqlchelpers.UUIDFromStr(tenantId),
+ }
+
+ if opts.TokenID != nil {
+ params.TokenId = sqlchelpers.UUIDFromStr(*opts.TokenID)
+ }
+
+ if opts.TokenValue != nil {
+ params.TokenValue = sqlchelpers.TextFromStr(*opts.TokenValue)
+ }
+
+ worker, err := r.queries.UpdateWebhookWorkerToken(ctx, r.pool, params)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return worker, nil
+}
+
+func (r *webhookWorkerEngineRepository) SoftDeleteWebhookWorker(ctx context.Context, id string, tenantId string) error {
+ return r.queries.SoftDeleteWebhookWorker(ctx, r.pool, dbsqlc.SoftDeleteWebhookWorkerParams{
+ ID: sqlchelpers.UUIDFromStr(id),
+ Tenantid: sqlchelpers.UUIDFromStr(tenantId),
+ })
+}
+
+func (r *webhookWorkerEngineRepository) HardDeleteWebhookWorker(ctx context.Context, id string, tenantId string) error {
+ return r.queries.HardDeleteWebhookWorker(ctx, r.pool, dbsqlc.HardDeleteWebhookWorkerParams{
ID: sqlchelpers.UUIDFromStr(id),
Tenantid: sqlchelpers.UUIDFromStr(tenantId),
})
diff --git a/pkg/repository/prisma/worker.go b/pkg/repository/prisma/worker.go
index 4958c1b97..209bbbebf 100644
--- a/pkg/repository/prisma/worker.go
+++ b/pkg/repository/prisma/worker.go
@@ -45,6 +45,13 @@ func (w *workerAPIRepository) GetWorkerById(workerId string) (*dbsqlc.GetWorkerB
return w.queries.GetWorkerById(context.Background(), w.pool, sqlchelpers.UUIDFromStr(workerId))
}
+func (w *workerAPIRepository) GetWorkerActionsByWorkerId(tenantid, workerId string) ([]pgtype.Text, error) {
+ return w.queries.GetWorkerActionsByWorkerId(context.Background(), w.pool, dbsqlc.GetWorkerActionsByWorkerIdParams{
+ Workerid: sqlchelpers.UUIDFromStr(workerId),
+ Tenantid: sqlchelpers.UUIDFromStr(tenantid),
+ })
+}
+
func (w *workerAPIRepository) ListWorkerState(tenantId, workerId string, failed bool) ([]*dbsqlc.ListSemaphoreSlotsWithStateForWorkerRow, []*dbsqlc.ListRecentStepRunsForWorkerRow, error) {
slots, err := w.queries.ListSemaphoreSlotsWithStateForWorker(context.Background(), w.pool, dbsqlc.ListSemaphoreSlotsWithStateForWorkerParams{
Workerid: sqlchelpers.UUIDFromStr(workerId),
diff --git a/pkg/repository/webhook_worker.go b/pkg/repository/webhook_worker.go
index aabe01476..9866644fc 100644
--- a/pkg/repository/webhook_worker.go
+++ b/pkg/repository/webhook_worker.go
@@ -2,11 +2,12 @@ package repository
import (
"context"
+ "fmt"
"github.com/hatchet-dev/hatchet/pkg/repository/prisma/dbsqlc"
)
-type UpsertWebhookWorkerOpts struct {
+type CreateWebhookWorkerOpts struct {
Name string
URL string `validate:"required,url"`
Secret string
@@ -16,6 +17,13 @@ type UpsertWebhookWorkerOpts struct {
TokenID *string
}
+type UpdateWebhookWorkerTokenOpts struct {
+ TokenValue *string
+ TokenID *string
+}
+
+var ErrDuplicateKey = fmt.Errorf("duplicate key error")
+
type WebhookWorkerEngineRepository interface {
// ListWebhookWorkersByPartitionId returns the list of webhook workers for a worker partition
ListWebhookWorkersByPartitionId(ctx context.Context, partitionId string) ([]*dbsqlc.WebhookWorker, error)
@@ -23,9 +31,21 @@ type WebhookWorkerEngineRepository interface {
// ListActiveWebhookWorkers returns the list of active webhook workers for the given tenant
ListActiveWebhookWorkers(ctx context.Context, tenantId string) ([]*dbsqlc.WebhookWorker, error)
- // UpsertWebhookWorker creates a new webhook worker with the given options
- UpsertWebhookWorker(ctx context.Context, opts *UpsertWebhookWorkerOpts) (*dbsqlc.WebhookWorker, error)
+ // ListWebhookWorkerRequests returns the list of webhook worker requests for the given webhook worker id
+ ListWebhookWorkerRequests(ctx context.Context, webhookWorkerId string) ([]*dbsqlc.WebhookWorkerRequest, error)
- // DeleteWebhookWorker deletes a webhook worker with the given id and tenant id
- DeleteWebhookWorker(ctx context.Context, id string, tenantId string) error
+ // InsertWebhookWorkerRequest inserts a new webhook worker request with the given options
+ InsertWebhookWorkerRequest(ctx context.Context, webhookWorkerId string, method string, statusCode int32) error
+
+ // CreateWebhookWorker creates a new webhook worker with the given options
+ CreateWebhookWorker(ctx context.Context, opts *CreateWebhookWorkerOpts) (*dbsqlc.WebhookWorker, error)
+
+ // UpdateWebhookWorkerToken updates a webhook worker with the given id and tenant id
+ UpdateWebhookWorkerToken(ctx context.Context, id string, tenantId string, opts *UpdateWebhookWorkerTokenOpts) (*dbsqlc.WebhookWorker, error)
+
+ // SoftDeleteWebhookWorker flags a webhook worker for delete with the given id and tenant id
+ SoftDeleteWebhookWorker(ctx context.Context, id string, tenantId string) error
+
+ // HardDeleteWebhookWorker deletes a webhook worker with the given id and tenant id
+ HardDeleteWebhookWorker(ctx context.Context, id string, tenantId string) error
}
diff --git a/pkg/repository/worker.go b/pkg/repository/worker.go
index df521199d..97a87674c 100644
--- a/pkg/repository/worker.go
+++ b/pkg/repository/worker.go
@@ -74,6 +74,9 @@ type WorkerAPIRepository interface {
// ListRecentWorkerStepRuns lists recent step runs for a given worker
ListWorkerState(tenantId, workerId string, failed bool) ([]*dbsqlc.ListSemaphoreSlotsWithStateForWorkerRow, []*dbsqlc.ListRecentStepRunsForWorkerRow, error)
+ // GetWorkerActionsByWorkerId returns a list of actions for a worker
+ GetWorkerActionsByWorkerId(tenantid, workerId string) ([]pgtype.Text, error)
+
// GetWorkerById returns a worker by its id.
GetWorkerById(workerId string) (*dbsqlc.GetWorkerByIdRow, error)
diff --git a/pkg/worker/worker_webhook.go b/pkg/worker/worker_webhook.go
index d721befe3..1789daa55 100644
--- a/pkg/worker/worker_webhook.go
+++ b/pkg/worker/worker_webhook.go
@@ -119,7 +119,13 @@ func (w *Worker) sendWebhook(ctx context.Context, action *client.Action, ww Webh
Action: action,
ActionPayload: string(action.ActionPayload),
}
- _, err := whrequest.Send(ctx, ww.URL, ww.Secret, actionWithPayload)
+
+ _, statusCode, err := whrequest.Send(ctx, ww.URL, ww.Secret, actionWithPayload)
+
+ if statusCode != nil && *statusCode != 200 {
+ w.l.Debug().Msgf("step run %s webhook sent with status code %d", action.StepRunId, *statusCode)
+ }
+
if err != nil {
w.l.Warn().Msgf("step run %s could not send webhook to %s: %s", action.StepRunId, ww.URL, err)
if err := w.markFailed(action, fmt.Errorf("could not send webhook: %w", err)); err != nil {
diff --git a/prisma/migrations/20240823120423_0_42_4/migration.sql b/prisma/migrations/20240823120423_0_42_4/migration.sql
new file mode 100644
index 000000000..4ee9700ac
--- /dev/null
+++ b/prisma/migrations/20240823120423_0_42_4/migration.sql
@@ -0,0 +1,19 @@
+-- CreateEnum
+CREATE TYPE "WebhookWorkerRequestMethod" AS ENUM ('GET', 'POST', 'PUT');
+
+-- CreateTable
+CREATE TABLE "WebhookWorkerRequest" (
+ "id" UUID NOT NULL,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "webhookWorkerId" UUID NOT NULL,
+ "method" "WebhookWorkerRequestMethod" NOT NULL,
+ "statusCode" INTEGER NOT NULL,
+
+ CONSTRAINT "WebhookWorkerRequest_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateIndex
+CREATE UNIQUE INDEX "WebhookWorkerRequest_id_key" ON "WebhookWorkerRequest"("id");
+
+-- AddForeignKey
+ALTER TABLE "WebhookWorkerRequest" ADD CONSTRAINT "WebhookWorkerRequest_webhookWorkerId_fkey" FOREIGN KEY ("webhookWorkerId") REFERENCES "WebhookWorker"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 3331699e9..2b88f1aaa 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -112,6 +112,29 @@ model WebhookWorker {
webhookWorkerWorkflows WebhookWorkerWorkflow[]
worker Worker?
+
+ requests WebhookWorkerRequest[]
+}
+
+enum WebhookWorkerRequestMethod {
+ GET
+ POST
+ PUT
+}
+
+model WebhookWorkerRequest {
+ id String @id @unique @default(uuid()) @db.Uuid
+ createdAt DateTime @default(now())
+
+ // the parent webhook worker
+ webhookWorker WebhookWorker @relation(fields: [webhookWorkerId], references: [id], onDelete: Cascade, onUpdate: Cascade)
+ webhookWorkerId String @db.Uuid
+
+ // the request method
+ method WebhookWorkerRequestMethod
+
+ // the request status code
+ statusCode Int
}
model WebhookWorkerWorkflow {
diff --git a/sql/migrations/20240823120430_0.42.4.sql b/sql/migrations/20240823120430_0.42.4.sql
new file mode 100644
index 000000000..066573ba9
--- /dev/null
+++ b/sql/migrations/20240823120430_0.42.4.sql
@@ -0,0 +1,6 @@
+-- Create enum type "WebhookWorkerRequestMethod"
+CREATE TYPE "WebhookWorkerRequestMethod" AS ENUM ('GET', 'POST', 'PUT');
+-- Create "WebhookWorkerRequest" table
+CREATE TABLE "WebhookWorkerRequest" ("id" uuid NOT NULL, "createdAt" timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "webhookWorkerId" uuid NOT NULL, "method" "WebhookWorkerRequestMethod" NOT NULL, "statusCode" integer NOT NULL, PRIMARY KEY ("id"), CONSTRAINT "WebhookWorkerRequest_webhookWorkerId_fkey" FOREIGN KEY ("webhookWorkerId") REFERENCES "WebhookWorker" ("id") ON UPDATE CASCADE ON DELETE CASCADE);
+-- Create index "WebhookWorkerRequest_id_key" to table: "WebhookWorkerRequest"
+CREATE UNIQUE INDEX "WebhookWorkerRequest_id_key" ON "WebhookWorkerRequest" ("id");
diff --git a/sql/migrations/atlas.sum b/sql/migrations/atlas.sum
index 7960cd356..07e1c33db 100644
--- a/sql/migrations/atlas.sum
+++ b/sql/migrations/atlas.sum
@@ -1,4 +1,4 @@
-h1:ZCdX1Ul6UwDyP8dEntES43VPqA+bJvD4ht0vwdH0jRs=
+h1:BXNv7MdMKFP6K9x+yDK4ltddqlcL29+Nvc4PIQC/J00=
20240115180414_init.sql h1:Ef3ZyjAHkmJPdGF/dEWCahbwgcg6uGJKnDxW2JCRi2k=
20240122014727_v0_6_0.sql h1:o/LdlteAeFgoHJ3e/M4Xnghqt9826IE/Y/h0q95Acuo=
20240126235456_v0_7_0.sql h1:KiVzt/hXgQ6esbdC6OMJOOWuYEXmy1yeCpmsVAHTFKs=
@@ -47,3 +47,4 @@ h1:ZCdX1Ul6UwDyP8dEntES43VPqA+bJvD4ht0vwdH0jRs=
20240812153737_v0.42.1.sql h1:dUADhy9vhbGwdrn+h2KqshcdfSUvSUOlF190Sy6xGhw=
20240815151244_v0.42.2.sql h1:t1vDmgBTS6QpPIUH+QSgqGIQQ4a7E2g2eA0wHei4jj4=
20240821170947_0.42.3.sql h1:eh6eC0fUreFdyVm0pC2D6B/3Cffo/t9SQjf2Ai+6Eu0=
+20240823120430_0.42.4.sql h1:kdfT+J0j21YBvohnF5k+qtt+4YU6egi4fLIaReDucmc=
diff --git a/sql/schema/schema.sql b/sql/schema/schema.sql
index 718041481..7f99d519f 100644
--- a/sql/schema/schema.sql
+++ b/sql/schema/schema.sql
@@ -37,6 +37,9 @@ CREATE TYPE "TenantResourceLimitAlertType" AS ENUM ('Alarm', 'Exhausted');
-- CreateEnum
CREATE TYPE "VcsProvider" AS ENUM ('GITHUB');
+-- CreateEnum
+CREATE TYPE "WebhookWorkerRequestMethod" AS ENUM ('GET', 'POST', 'PUT');
+
-- CreateEnum
CREATE TYPE "WorkerLabelComparator" AS ENUM ('EQUAL', 'NOT_EQUAL', 'GREATER_THAN', 'GREATER_THAN_OR_EQUAL', 'LESS_THAN', 'LESS_THAN_OR_EQUAL');
@@ -608,6 +611,17 @@ CREATE TABLE "WebhookWorker" (
CONSTRAINT "WebhookWorker_pkey" PRIMARY KEY ("id")
);
+-- CreateTable
+CREATE TABLE "WebhookWorkerRequest" (
+ "id" UUID NOT NULL,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "webhookWorkerId" UUID NOT NULL,
+ "method" "WebhookWorkerRequestMethod" NOT NULL,
+ "statusCode" INTEGER NOT NULL,
+
+ CONSTRAINT "WebhookWorkerRequest_pkey" PRIMARY KEY ("id")
+);
+
-- CreateTable
CREATE TABLE "WebhookWorkerWorkflow" (
"id" UUID NOT NULL,
@@ -1098,6 +1112,9 @@ CREATE UNIQUE INDEX "WebhookWorker_id_key" ON "WebhookWorker"("id" ASC);
-- CreateIndex
CREATE UNIQUE INDEX "WebhookWorker_url_key" ON "WebhookWorker"("url" ASC);
+-- CreateIndex
+CREATE UNIQUE INDEX "WebhookWorkerRequest_id_key" ON "WebhookWorkerRequest"("id" ASC);
+
-- CreateIndex
CREATE UNIQUE INDEX "WebhookWorkerWorkflow_id_key" ON "WebhookWorkerWorkflow"("id" ASC);
@@ -1428,6 +1445,9 @@ ALTER TABLE "WebhookWorker" ADD CONSTRAINT "WebhookWorker_tenantId_fkey" FOREIGN
-- AddForeignKey
ALTER TABLE "WebhookWorker" ADD CONSTRAINT "WebhookWorker_tokenId_fkey" FOREIGN KEY ("tokenId") REFERENCES "APIToken"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+-- AddForeignKey
+ALTER TABLE "WebhookWorkerRequest" ADD CONSTRAINT "WebhookWorkerRequest_webhookWorkerId_fkey" FOREIGN KEY ("webhookWorkerId") REFERENCES "WebhookWorker"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+
-- AddForeignKey
ALTER TABLE "WebhookWorkerWorkflow" ADD CONSTRAINT "WebhookWorkerWorkflow_webhookWorkerId_fkey" FOREIGN KEY ("webhookWorkerId") REFERENCES "WebhookWorker"("id") ON DELETE CASCADE ON UPDATE CASCADE;