// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.29.0 // source: webhooks.sql package db import ( "context" "github.com/google/uuid" "github.com/jackc/pgx/v5/pgtype" ) const createWebhook = `-- name: CreateWebhook :one INSERT INTO core.webhooks ( project_id, url, secret, events, enabled, created_by_user_id ) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id, project_id, url, secret, events, enabled, created_by_user_id, created_at, updated_at ` type CreateWebhookParams struct { ProjectID uuid.UUID `json:"project_id"` Url string `json:"url"` Secret []byte `json:"secret"` Events []string `json:"events"` Enabled bool `json:"enabled"` CreatedByUserID pgtype.UUID `json:"created_by_user_id"` } func (q *Queries) CreateWebhook(ctx context.Context, arg CreateWebhookParams) (CoreWebhook, error) { row := q.db.QueryRow(ctx, createWebhook, arg.ProjectID, arg.Url, arg.Secret, arg.Events, arg.Enabled, arg.CreatedByUserID, ) var i CoreWebhook err := row.Scan( &i.ID, &i.ProjectID, &i.Url, &i.Secret, &i.Events, &i.Enabled, &i.CreatedByUserID, &i.CreatedAt, &i.UpdatedAt, ) return i, err } const deleteWebhook = `-- name: DeleteWebhook :one DELETE FROM core.webhooks WHERE id = $1 AND project_id = $2 RETURNING id, project_id, url, secret, events, enabled, created_by_user_id, created_at, updated_at ` type DeleteWebhookParams struct { ID uuid.UUID `json:"id"` ProjectID uuid.UUID `json:"project_id"` } func (q *Queries) DeleteWebhook(ctx context.Context, arg DeleteWebhookParams) (CoreWebhook, error) { row := q.db.QueryRow(ctx, deleteWebhook, arg.ID, arg.ProjectID) var i CoreWebhook err := row.Scan( &i.ID, &i.ProjectID, &i.Url, &i.Secret, &i.Events, &i.Enabled, &i.CreatedByUserID, &i.CreatedAt, &i.UpdatedAt, ) return i, err } const getWebhookByID = `-- name: GetWebhookByID :one SELECT id, project_id, url, secret, events, enabled, created_by_user_id, created_at, updated_at FROM core.webhooks WHERE id = $1 ` func (q *Queries) GetWebhookByID(ctx context.Context, id uuid.UUID) (CoreWebhook, error) { row := q.db.QueryRow(ctx, getWebhookByID, id) var i CoreWebhook err := row.Scan( &i.ID, &i.ProjectID, &i.Url, &i.Secret, &i.Events, &i.Enabled, &i.CreatedByUserID, &i.CreatedAt, &i.UpdatedAt, ) return i, err } const getWebhookDeliveryByID = `-- name: GetWebhookDeliveryByID :one SELECT id, webhook_id, event_type, payload, status, attempts, last_status_code, last_error, delivered_at, next_retry_at, created_at FROM core.webhook_deliveries WHERE id = $1 ` func (q *Queries) GetWebhookDeliveryByID(ctx context.Context, id uuid.UUID) (CoreWebhookDelivery, error) { row := q.db.QueryRow(ctx, getWebhookDeliveryByID, id) var i CoreWebhookDelivery err := row.Scan( &i.ID, &i.WebhookID, &i.EventType, &i.Payload, &i.Status, &i.Attempts, &i.LastStatusCode, &i.LastError, &i.DeliveredAt, &i.NextRetryAt, &i.CreatedAt, ) return i, err } const insertWebhookDelivery = `-- name: InsertWebhookDelivery :one INSERT INTO core.webhook_deliveries ( webhook_id, event_type, payload, next_retry_at ) VALUES ($1, $2, $3, NOW()) RETURNING id, webhook_id, event_type, payload, status, attempts, last_status_code, last_error, delivered_at, next_retry_at, created_at ` type InsertWebhookDeliveryParams struct { WebhookID uuid.UUID `json:"webhook_id"` EventType string `json:"event_type"` Payload []byte `json:"payload"` } func (q *Queries) InsertWebhookDelivery(ctx context.Context, arg InsertWebhookDeliveryParams) (CoreWebhookDelivery, error) { row := q.db.QueryRow(ctx, insertWebhookDelivery, arg.WebhookID, arg.EventType, arg.Payload) var i CoreWebhookDelivery err := row.Scan( &i.ID, &i.WebhookID, &i.EventType, &i.Payload, &i.Status, &i.Attempts, &i.LastStatusCode, &i.LastError, &i.DeliveredAt, &i.NextRetryAt, &i.CreatedAt, ) return i, err } const listPendingWebhookDeliveries = `-- name: ListPendingWebhookDeliveries :many SELECT id, webhook_id, event_type, payload, status, attempts, last_status_code, last_error, delivered_at, next_retry_at, created_at FROM core.webhook_deliveries WHERE status = 'pending' AND (next_retry_at IS NULL OR next_retry_at <= NOW()) ORDER BY created_at LIMIT $1 ` func (q *Queries) ListPendingWebhookDeliveries(ctx context.Context, limit int32) ([]CoreWebhookDelivery, error) { rows, err := q.db.Query(ctx, listPendingWebhookDeliveries, limit) if err != nil { return nil, err } defer rows.Close() var items []CoreWebhookDelivery for rows.Next() { var i CoreWebhookDelivery if err := rows.Scan( &i.ID, &i.WebhookID, &i.EventType, &i.Payload, &i.Status, &i.Attempts, &i.LastStatusCode, &i.LastError, &i.DeliveredAt, &i.NextRetryAt, &i.CreatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const listWebhookDeliveries = `-- name: ListWebhookDeliveries :many SELECT id, webhook_id, event_type, payload, status, attempts, last_status_code, last_error, delivered_at, next_retry_at, created_at FROM core.webhook_deliveries WHERE webhook_id = $1 ORDER BY created_at DESC LIMIT $2 ` type ListWebhookDeliveriesParams struct { WebhookID uuid.UUID `json:"webhook_id"` Limit int32 `json:"limit"` } func (q *Queries) ListWebhookDeliveries(ctx context.Context, arg ListWebhookDeliveriesParams) ([]CoreWebhookDelivery, error) { rows, err := q.db.Query(ctx, listWebhookDeliveries, arg.WebhookID, arg.Limit) if err != nil { return nil, err } defer rows.Close() var items []CoreWebhookDelivery for rows.Next() { var i CoreWebhookDelivery if err := rows.Scan( &i.ID, &i.WebhookID, &i.EventType, &i.Payload, &i.Status, &i.Attempts, &i.LastStatusCode, &i.LastError, &i.DeliveredAt, &i.NextRetryAt, &i.CreatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const listWebhooks = `-- name: ListWebhooks :many SELECT id, project_id, url, secret, events, enabled, created_by_user_id, created_at, updated_at FROM core.webhooks WHERE project_id = $1 ORDER BY created_at ASC ` func (q *Queries) ListWebhooks(ctx context.Context, projectID uuid.UUID) ([]CoreWebhook, error) { rows, err := q.db.Query(ctx, listWebhooks, projectID) if err != nil { return nil, err } defer rows.Close() var items []CoreWebhook for rows.Next() { var i CoreWebhook if err := rows.Scan( &i.ID, &i.ProjectID, &i.Url, &i.Secret, &i.Events, &i.Enabled, &i.CreatedByUserID, &i.CreatedAt, &i.UpdatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const listWebhooksForEvent = `-- name: ListWebhooksForEvent :many SELECT id, project_id, url, secret, events, enabled, created_by_user_id, created_at, updated_at FROM core.webhooks WHERE project_id = $1 AND enabled AND (cardinality(events) = 0 OR EXISTS ( SELECT 1 FROM unnest(events) AS e WHERE e = '*' OR $2::text LIKE REPLACE(e, '*', '%') )) ` type ListWebhooksForEventParams struct { ProjectID uuid.UUID `json:"project_id"` Column2 string `json:"column_2"` } func (q *Queries) ListWebhooksForEvent(ctx context.Context, arg ListWebhooksForEventParams) ([]CoreWebhook, error) { rows, err := q.db.Query(ctx, listWebhooksForEvent, arg.ProjectID, arg.Column2) if err != nil { return nil, err } defer rows.Close() var items []CoreWebhook for rows.Next() { var i CoreWebhook if err := rows.Scan( &i.ID, &i.ProjectID, &i.Url, &i.Secret, &i.Events, &i.Enabled, &i.CreatedByUserID, &i.CreatedAt, &i.UpdatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const markWebhookDelivery = `-- name: MarkWebhookDelivery :exec UPDATE core.webhook_deliveries SET status = $2, attempts = attempts + 1, last_status_code = $3, last_error = $4, delivered_at = $5, next_retry_at = $6 WHERE id = $1 ` type MarkWebhookDeliveryParams struct { ID uuid.UUID `json:"id"` Status string `json:"status"` LastStatusCode *int32 `json:"last_status_code"` LastError string `json:"last_error"` DeliveredAt pgtype.Timestamptz `json:"delivered_at"` NextRetryAt pgtype.Timestamptz `json:"next_retry_at"` } func (q *Queries) MarkWebhookDelivery(ctx context.Context, arg MarkWebhookDeliveryParams) error { _, err := q.db.Exec(ctx, markWebhookDelivery, arg.ID, arg.Status, arg.LastStatusCode, arg.LastError, arg.DeliveredAt, arg.NextRetryAt, ) return err } const updateWebhook = `-- name: UpdateWebhook :one UPDATE core.webhooks SET url = $3, events = $4, enabled = $5, secret = CASE WHEN $6::boolean THEN $7 ELSE secret END, updated_at = NOW() WHERE id = $1 AND project_id = $2 RETURNING id, project_id, url, secret, events, enabled, created_by_user_id, created_at, updated_at ` type UpdateWebhookParams struct { ID uuid.UUID `json:"id"` ProjectID uuid.UUID `json:"project_id"` Url string `json:"url"` Events []string `json:"events"` Enabled bool `json:"enabled"` Column6 bool `json:"column_6"` Secret []byte `json:"secret"` } func (q *Queries) UpdateWebhook(ctx context.Context, arg UpdateWebhookParams) (CoreWebhook, error) { row := q.db.QueryRow(ctx, updateWebhook, arg.ID, arg.ProjectID, arg.Url, arg.Events, arg.Enabled, arg.Column6, arg.Secret, ) var i CoreWebhook err := row.Scan( &i.ID, &i.ProjectID, &i.Url, &i.Secret, &i.Events, &i.Enabled, &i.CreatedByUserID, &i.CreatedAt, &i.UpdatedAt, ) return i, err }