operations

package
v1.30.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2026 License: Apache-2.0 Imports: 41 Imported by: 0

Documentation

Overview

Package operations dispatches and executes definition-scoped operations for integrations

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Code generated by entx integration mapping generator. DO NOT EDIT.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Generated by entx integration mapping generator as a starting point. Modify as needed.

Index

Constants

View Source
const QuestionnaireTransformOperationName = "questionnaire.transform.assessment"

Variables

View Source
var (
	// ErrGalaRequired indicates the gala dependency is missing
	ErrGalaRequired = errors.New("integrations/operations: gala required")
	// ErrDispatchInputInvalid indicates the queued operation request failed caller-input validation
	ErrDispatchInputInvalid = errors.New("integrations/operations: dispatch input invalid")
	// ErrInstallationIDRequired indicates the installation identifier is missing
	ErrInstallationIDRequired = errors.New("integrations/operations: installation id required")
	// ErrOperationConfigInvalid indicates queued operation config failed caller-input validation
	ErrOperationConfigInvalid = errors.New("integrations/operations: operation config invalid")
	// ErrRunIDRequired indicates the run identifier is missing
	ErrRunIDRequired = errors.New("integrations/operations: run id required")
	// ErrIngestDefinitionNotFound indicates the operation definition could not be resolved for ingest
	ErrIngestDefinitionNotFound = errors.New("integrations/operations: ingest definition not found")
	// ErrIngestSchemaNotFound indicates the generated ingest schema contract was not found
	ErrIngestSchemaNotFound = errors.New("integrations/operations: ingest schema not found")
	// ErrIngestSchemaNotDeclared indicates the payload schema was not declared in the operation's ingest contracts
	ErrIngestSchemaNotDeclared = errors.New("integrations/operations: ingest schema not declared in contracts")
	// ErrIngestMappingNotFound indicates the definition does not provide a mapping for the emitted payload variant
	ErrIngestMappingNotFound = errors.New("integrations/operations: ingest mapping not found")
	// ErrIngestFilterFailed indicates the CEL filter evaluation failed
	ErrIngestFilterFailed = errors.New("integrations/operations: ingest filter failed")
	// ErrIngestInstallationFilterConfigInvalid indicates the installation filter configuration could not be decoded
	ErrIngestInstallationFilterConfigInvalid = errors.New("integrations/operations: ingest installation filter config invalid")
	// ErrIngestTransformFailed indicates the CEL map evaluation failed
	ErrIngestTransformFailed = errors.New("integrations/operations: ingest transform failed")
	// ErrIngestMappedDocumentInvalid indicates the mapped payload did not satisfy the generated schema contract
	ErrIngestMappedDocumentInvalid = errors.New("integrations/operations: ingest mapped document invalid")
	// ErrIngestUpsertKeyMissing indicates the mapped payload omitted every generated upsert key
	ErrIngestUpsertKeyMissing = errors.New("integrations/operations: ingest upsert key missing")
	// ErrIngestUpsertConflict indicates the generated upsert keys matched more than one record
	ErrIngestUpsertConflict = errors.New("integrations/operations: ingest upsert conflict")
	// ErrIngestUnsupportedSchema indicates the runtime does not yet support the requested generated ingest schema
	ErrIngestUnsupportedSchema = errors.New("integrations/operations: ingest schema unsupported")
	// ErrIngestPersistFailed indicates the mapped record could not be persisted
	ErrIngestPersistFailed = errors.New("integrations/operations: ingest persistence failed")
	// ErrIngestRecordsFailed indicates one or more records in the batch failed to map or persist
	ErrIngestRecordsFailed = errors.New("integrations/operations: ingest records failed")
	// ErrOperationDisabled indicates the operation is disabled for this installation and the reconcile cycle should stop
	ErrOperationDisabled = errors.New("integrations/operations: operation disabled")
	// ErrExportFailed indicates the Drive file export request failed
	ErrExportFailed = errors.New("integrations/operations: file export failed")
	// ErrResultEncode indicates an operation result could not be serialized
	ErrResultEncode = errors.New("integrations/operations: result encode failed")
)
View Source
var (
	// ReconcileTopic is the Gala topic name for reconciliation envelopes
	ReconcileTopic = gala.TopicName("integration." + reconcileSchemaName)
)

Functions

func CompleteRun

func CompleteRun(ctx context.Context, db *ent.Client, runID string, startedAt time.Time, result RunResult) error

CompleteRun writes the final run outcome

func ContextCodecs

func ContextCodecs() []gala.ContextCodec

ContextCodecs returns the durable context codecs required by integration dispatch and ingest listeners

func CreatePendingRun

func CreatePendingRun(ctx context.Context, db *ent.Client, installation *ent.Integration, req types.DispatchRequest) (*ent.IntegrationRun, error)

CreatePendingRun inserts one pending run record for a dispatch request

func Dispatch

func Dispatch(ctx context.Context, reg *registry.Registry, db *ent.Client, runtime *gala.Gala, req types.DispatchRequest) (types.DispatchResult, error)

Dispatch validates and enqueues one operation execution request. When DispatchRequest.Runtime is true, no DB integration lookup is performed and the client is resolved from the registry at execution time

func EmitPayloadSets

func EmitPayloadSets(ctx context.Context, ic IngestContext, operationName string, contracts []types.IngestContract, payloadSets []types.IngestPayloadSet, options IngestOptions) error

EmitPayloadSets transforms one batch of mapped payload sets and dispatches them through the appropriate ingest path

func Handle added in v1.23.8

Handle adapts the document export to the generic operation registration boundary

func LastSuccessfulRunAt added in v1.19.1

func LastSuccessfulRunAt(ctx context.Context, db *ent.Client, integrationID, operationName string) (*time.Time, error)

LastSuccessfulRunAt returns the finish time of the most recent successful run for the given integration and operation, or nil if no successful run exists yet

func MarkRunRunning

func MarkRunRunning(ctx context.Context, db *ent.Client, runID string) error

MarkRunRunning transitions one run to running

func NextCampaignRunAt added in v1.20.0

func NextCampaignRunAt(from time.Time, frequency enums.Frequency, interval int, timezone string) time.Time

NextCampaignRunAt computes the next run time from the given base time using calendar-based frequency and interval arithmetic. All frequencies are calendar-relative (month boundaries, not fixed durations) so time.AddDate is used rather than time.Add

func ProcessPayloadSets

func ProcessPayloadSets(ctx context.Context, ic IngestContext, operationName string, contracts []types.IngestContract, payloadSets []types.IngestPayloadSet, options IngestOptions) error

ProcessPayloadSets persists one batch of mapped payload sets synchronously

func RegisterIngestListeners

func RegisterIngestListeners(runtime *gala.Gala) error

RegisterIngestListeners attaches second-stage ingest listeners for all supported generated ingest schemas

func RegisterReconcileListener

func RegisterReconcileListener(runtime *gala.Gala, reg *registry.Registry, handle ReconcileHandler, schedule gala.Schedule) error

RegisterReconcileListener registers the Gala listener driving every recurring operation cycle: installation-bound reconciliation and runtime-bound scheduled operations

func RegisterRuntimeListeners

func RegisterRuntimeListeners(runtime *gala.Gala, reg *registry.Registry, services types.RuntimeServices, operationHandle func(context.Context, Envelope) error, webhookHandle func(context.Context, WebhookEnvelope) error) error

RegisterRuntimeListeners registers the event, webhook, and definition-provided gala listeners for the integration runtime. Adaptive-scheduled pollers (reconcile, scheduled operations) register themselves at the call site via their own Register*Listener functions

func RegisterScheduledListener added in v1.20.0

func RegisterScheduledListener[T any](cfg ScheduledListenerConfig[T]) error

RegisterScheduledListener registers a self-sustaining Gala listener that processes one cycle, computes the next adaptive interval, and re-emits

func ResolveOwnerIntegration added in v1.30.0

func ResolveOwnerIntegration(ctx context.Context, db *ent.Client, definitionID, ownerID string, prefer ...func(*ent.Integration) bool) (string, error)

ResolveOwnerIntegration finds a connected integration for the given definition and owner. When multiple connected integrations exist, the optional prefer function selects among them. Returns empty string with no error when no integration is found, allowing the caller to fall through to runtime dispatch

func Run added in v1.23.8

Run executes the HTML export using the Google Drive API files.export endpoint

func ValidateConfig

func ValidateConfig(schema json.RawMessage, value json.RawMessage) error

ValidateConfig validates one raw configuration payload against the operation schema

Types

type DocClient added in v1.23.8

type DocClient interface {
	Export(ctx context.Context, cfg *DocumentExport) error
}

DocClient is the interface all document integrations must satisfy

type DocumentExport added in v1.23.8

type DocumentExport struct {
	// FileID is the external file identifier to export
	FileID string `json:"fileId"`
	// HTML is the exported document content as an embeddable iframe string (populated in the response)
	HTML string `json:"html,omitempty"`
	// PDF is the exported document content as raw PDF bytes (populated in the response)
	PDF []byte `json:"pdf,omitempty"`
	// MimeType is the content type of the downloaded file
	MimeType string `json:"mimeType,omitempty"`
	// Name is the file name without extension
	Name string `json:"name,omitempty"`
}

DocumentExport holds the configuration and result for a integration document export

type Envelope

type Envelope struct {
	types.ExecutionMetadata
	// Config is the operation configuration payload
	Config json.RawMessage `json:"config,omitempty"`
	// ForceClientRebuild requests client cache bypass
	ForceClientRebuild bool `json:"forceClientRebuild,omitempty"`
}

Envelope is the payload emitted to the operation topic

type IngestContext

type IngestContext struct {
	// Registry is the integration definition registry used to resolve mappings and definitions
	Registry *registry.Registry
	// DB is the ent client used for persistence
	DB *ent.Client
	// Runtime is the Gala instance used for async emit; nil on the synchronous persist path
	Runtime *gala.Gala
	// Integration is the integration record being ingested into
	Integration *ent.Integration
}

IngestContext holds the stable per-integration dependencies shared across all ingest call paths

type IngestOptions

type IngestOptions struct {
	// DirectorySyncRunID groups all directory-related ingest records from one sync batch
	DirectorySyncRunID string
	// SkipDirectorySyncRunFinalization instructs the processor not to finalize the directory sync run after processing
	SkipDirectorySyncRunFinalization bool
	// Source identifies the mechanism that produced the ingest data (e.g. webhook, poll, manual)
	Source integrationgenerated.IntegrationIngestSource
	// RunID is a caller-supplied correlation identifier for the overall operation run
	RunID string
	// Webhook is the webhook name or identifier that triggered this ingest
	Webhook string
	// WebhookEvent is the event type reported by the webhook provider
	WebhookEvent string
	// DeliveryID is the provider-assigned delivery identifier; used for deduplication
	DeliveryID string
	// WorkflowMeta carries workflow instance context
	WorkflowMeta *types.WorkflowMeta
}

IngestOptions carries the minimal ingest-time metadata needed by persistence

func IngestOptionsFromMetadata

IngestOptionsFromMetadata derives ingest options from execution metadata

type ReconcileEnvelope

type ReconcileEnvelope struct {
	types.ExecutionMetadata
	// Schedule is the adaptive scheduling state carried across cycles
	Schedule gala.ScheduleState `json:"schedule"`
}

ReconcileEnvelope is the durable payload for one recurring operation cycle, either installation-bound (IntegrationID set) or runtime-bound (Runtime true); the type name is the durable topic identity and must not change

type ReconcileHandler

type ReconcileHandler func(context.Context, ReconcileEnvelope) (int, error)

ReconcileHandler processes one recurring cycle envelope and returns the cycle delta (used for adaptive scheduling)

type RunResult

type RunResult struct {
	// Status is the terminal run status
	Status enums.IntegrationRunStatus
	// Summary is the optional summary text stored on the run
	Summary string
	// Error is the optional terminal error text stored on the run
	Error string
	// Metrics is the structured metrics payload stored on the run
	Metrics map[string]any
}

RunResult captures the terminal state of one run

type ScheduledListenerConfig added in v1.20.0

type ScheduledListenerConfig[T any] struct {
	// Runtime is the Gala instance to register on
	Runtime *gala.Gala
	// Topic is the Gala topic name
	Topic gala.TopicName
	// Name is the stable listener name
	Name string
	// Schedule controls adaptive interval computation
	Schedule gala.Schedule
	// Handle is the handler invoked each cycle, returning the delta for scheduling
	Handle func(context.Context, T) (int, error)
	// State extracts the ScheduleState from the envelope
	State func(T) gala.ScheduleState
	// Wrap builds a new envelope carrying the updated ScheduleState
	Wrap func(T, gala.ScheduleState) T
	// PrepareEmit optionally enriches the context and headers before re-emitting
	PrepareEmit func(context.Context, T) (context.Context, gala.Headers)
	// ShouldCancel optionally classifies an execution error; when it returns
	// true the cycle is cancelled immediately without scheduling a retry
	ShouldCancel func(context.Context, T, error) bool
	// ScheduleOverride optionally returns a per-envelope schedule that
	// overrides the default; returning nil falls back to the config-level Schedule
	ScheduleOverride func(T) *gala.Schedule
}

ScheduledListenerConfig defines the registration parameters for a self-sustaining Gala listener with adaptive scheduling

type UserInput added in v1.23.8

type UserInput struct {
	// Primary marks this installation as the authoritative source for live document exports
	Primary bool `json:"primary,omitempty" jsonschema:"title=Primary"`
}

UserInput holds installation-specific configuration collected from the user

type WebhookEnvelope

type WebhookEnvelope struct {
	types.ExecutionMetadata
	// Payload is the raw webhook request body
	Payload json.RawMessage `json:"payload"`
	// Headers contains the inbound HTTP request headers
	Headers map[string]string `json:"headers,omitempty"`
}

WebhookEnvelope is the durable payload emitted for one inbound integration webhook event

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL