Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .task/checksum/generate-ent-smart
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8676a695908d230afbbf0cc5b678ebc6
b95d45fe30a0f662bbb83fedaf74af0c
2 changes: 1 addition & 1 deletion .task/checksum/generate-graphql-smart
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4cda2227d61728c8a8efb7aec5c7c525
1501d436c2c2a11c2890c8ff67877df5
4 changes: 2 additions & 2 deletions cli/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ require (
github.com/lestrrat-go/jwx/v3 v3.2.0 // indirect
github.com/lestrrat-go/option/v2 v2.0.0 // indirect
github.com/mattn/go-colorable v0.1.15 // indirect
github.com/mattn/go-isatty v0.0.23 // indirect
github.com/mattn/go-isatty v0.0.24 // indirect
github.com/mattn/go-runewidth v0.0.24 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
Expand Down Expand Up @@ -104,7 +104,7 @@ require (
go.uber.org/atomic v1.11.0 // indirect
go.yaml.in/yaml/v3 v3.0.5 // indirect
golang.org/x/crypto v0.55.0 // indirect
golang.org/x/exp v0.0.0-20260718201538-764159d718ef // indirect
golang.org/x/exp v0.0.0-20260824195058-e88cd73687aa // indirect
golang.org/x/image v0.44.0 // indirect
golang.org/x/net v0.58.0 // indirect
golang.org/x/sync v0.22.0 // indirect
Expand Down
6 changes: 2 additions & 4 deletions cli/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,7 @@ github.com/lestrrat-go/option/v2 v2.0.0 h1:XxrcaJESE1fokHy3FpaQ/cXW8ZsIdWcdFzzLO
github.com/lestrrat-go/option/v2 v2.0.0/go.mod h1:oSySsmzMoR0iRzCDCaUfsCzxQHUEuhOViQObyy7S6Vg=
github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY=
github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.23 h1:cYwCQTQf3HB6xUC+BtyCLZNr7IzbOmoZbmssVNzSyiQ=
github.com/mattn/go-isatty v0.0.23/go.mod h1:nMCL3Zebbrt45jsMDgnfIwz6ydEQApk5oEI3HqDio6A=
github.com/mattn/go-isatty v0.0.24 h1:tGZZoVgT/KiqK1c8ocVLeDS8BSWMRd47J3Lbz7vsReI=
github.com/mattn/go-runewidth v0.0.24 h1:cpokDiIn0MGnhdHwuWnJBITySJ20QyNGnY2kR/ay2DU=
github.com/mattn/go-runewidth v0.0.24/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
Expand Down Expand Up @@ -244,8 +243,7 @@ go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
golang.org/x/crypto v0.55.0 h1:+KWHjbgOaAQ66dh/YlkZKHlz9ZUlq61AFirAR9ntP8M=
golang.org/x/exp v0.0.0-20260718201538-764159d718ef h1:LkZ48HFgy/TvhTI0bcWkjgFkgLyKUwcTbDjS0DUjw+A=
golang.org/x/exp v0.0.0-20260718201538-764159d718ef/go.mod h1:EdfpwwqSu+0Li0mzskwHU6FWDV3t9Q+RZDo3QMUtL3Q=
golang.org/x/exp v0.0.0-20260824195058-e88cd73687aa h1:QSyA8ishJCyT21kER9KwNt0b7BM3iRK4x9QXhjN5Fdk=
golang.org/x/image v0.44.0 h1:+tDekMZED9+LrtB3G5xzRggpVh9CARjZqROla3R3R+I=
golang.org/x/image v0.44.0/go.mod h1:V8K3KE9KKKE+pLpQDOeN18w9oacNSvy1tDOirTu4xtY=
golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
Expand Down
9 changes: 9 additions & 0 deletions common/enums/allenums_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ func TestEnumCoverage(t *testing.T) {
{name: "AssessmentType", value: enums.AssessmentTypeInternal,
unmarshal: func(v any) error { var e enums.AssessmentType; return e.UnmarshalGQL(v) },
parse: func() { enums.ToAssessmentType("INTERNAL") }},
{name: "AudienceType", value: enums.AudienceTypeManual,
unmarshal: func(v any) error { var e enums.AudienceType; return e.UnmarshalGQL(v) },
parse: func() { enums.ToAudienceType("MANUAL") }},
{name: "AssetType", value: enums.AssetTypeTechnology,
unmarshal: func(v any) error { var e enums.AssetType; return e.UnmarshalGQL(v) },
parse: func() { enums.ToAssetType("TECHNOLOGY") }},
Expand Down Expand Up @@ -166,6 +169,9 @@ func TestEnumCoverage(t *testing.T) {
{name: "JobPlatformType", value: enums.JobPlatformTypeGo,
unmarshal: func(v any) error { var e enums.JobPlatformType; return e.UnmarshalGQL(v) },
parse: func() { enums.ToJobPlatformType("GO") }},
{name: "JobRunnerStatus", value: enums.JobRunnerStatusOnline,
unmarshal: func(v any) error { var e enums.JobRunnerStatus; return e.UnmarshalGQL(v) },
parse: func() { enums.ToJobRunnerStatus("ONLINE") }},
{name: "JobWeekday", value: enums.JobWeekdaySunday,
unmarshal: func(v any) error { var e enums.JobWeekday; return e.UnmarshalGQL(v) },
parse: func() { enums.ToJobWeekday("SUNDAY") }},
Expand Down Expand Up @@ -232,6 +238,9 @@ func TestEnumCoverage(t *testing.T) {
{name: "ScanType", value: enums.ScanTypeDomain,
unmarshal: func(v any) error { var e enums.ScanType; return e.UnmarshalGQL(v) },
parse: func() { enums.ToScanType("DOMAIN") }},
{name: "ScheduledJobRunStatus", value: enums.ScheduledJobRunStatusPending,
unmarshal: func(v any) error { var e enums.ScheduledJobRunStatus; return e.UnmarshalGQL(v) },
parse: func() { enums.ToScheduledJobRunStatus("PENDING") }},
{name: "SourceType", value: enums.SourceTypeManual,
unmarshal: func(v any) error { var e enums.SourceType; return e.UnmarshalGQL(v) },
parse: func() { enums.ToSourceType("MANUAL") }},
Expand Down
37 changes: 37 additions & 0 deletions common/enums/audience_type.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package enums

import "io"

// AudienceType is a custom type representing how an audience resolves recipients.
type AudienceType string

var (
// AudienceTypeManual indicates an explicitly managed audience.
AudienceTypeManual AudienceType = "MANUAL"
// AudienceTypeDynamic indicates a filter-based audience.
AudienceTypeDynamic AudienceType = "DYNAMIC"
// AudienceTypeInvalid is used when an unsupported value is provided.
AudienceTypeInvalid AudienceType = "INVALID"
)

var audienceTypeValues = []AudienceType{
AudienceTypeManual,
AudienceTypeDynamic,
}

// Values returns a slice of strings that represents all possible AudienceType values.
func (AudienceType) Values() []string { return stringValues(audienceTypeValues) }

// String returns the AudienceType as a string.
func (r AudienceType) String() string { return string(r) }

// ToAudienceType returns the audience type enum based on string input.
func ToAudienceType(r string) *AudienceType {
return parse(r, audienceTypeValues, &AudienceTypeInvalid)
}

// MarshalGQL implements the Marshaler interface for gqlgen.
func (r AudienceType) MarshalGQL(w io.Writer) { marshalGQL(r, w) }

// UnmarshalGQL implements the Unmarshaler interface for gqlgen.
func (r *AudienceType) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
4 changes: 3 additions & 1 deletion common/enums/customdomaintype.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ func (CustomDomainType) Values() []string { return stringValues(customDomainType
func (r CustomDomainType) String() string { return string(r) }

// ToCustomDomainType converts a string to its corresponding CustomDomainType enum value.
func ToCustomDomainType(r string) *CustomDomainType { return parse(r, customDomainTypeValues, &CustomDomainTypeInvalid) }
func ToCustomDomainType(r string) *CustomDomainType {
return parse(r, customDomainTypeValues, &CustomDomainTypeInvalid)
}

// MarshalGQL implements the gqlgen Marshaler interface.
func (r CustomDomainType) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
Expand Down
6 changes: 6 additions & 0 deletions common/enums/exporttype.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ var (
ExportTypeAssessment ExportType = "ASSESSMENT"
// ExportTypeAsset indicates the asset.
ExportTypeAsset ExportType = "ASSET"
// ExportTypeAudience indicates the audience.
ExportTypeAudience ExportType = "AUDIENCE"
// ExportTypeAudienceMember indicates the audiencemember.
ExportTypeAudienceMember ExportType = "AUDIENCE_MEMBER"
// ExportTypeCampaign indicates the campaign.
ExportTypeCampaign ExportType = "CAMPAIGN"
// ExportTypeCheckResult indicates the checkresult.
Expand Down Expand Up @@ -63,6 +67,8 @@ var (
var exportTypeValues = []ExportType{
ExportTypeAssessment,
ExportTypeAsset,
ExportTypeAudience,
ExportTypeAudienceMember,
ExportTypeCampaign,
ExportTypeCheckResult,
ExportTypeContact,
Expand Down
4 changes: 3 additions & 1 deletion common/enums/mappingsource.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ func (MappingSource) Values() []string { return stringValues(mappingSourceValues
func (r MappingSource) String() string { return string(r) }

// ToMappingSource converts a string to its corresponding MappingSource enum value.
func ToMappingSource(r string) *MappingSource { return parse(r, mappingSourceValues, &MappingSourceInvalid) }
func ToMappingSource(r string) *MappingSource {
return parse(r, mappingSourceValues, &MappingSourceInvalid)
}

// MarshalGQL implements the gqlgen Marshaler interface.
func (r MappingSource) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
Expand Down
98 changes: 56 additions & 42 deletions common/enums/workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ var workflowKindValues = []WorkflowKind{WorkflowKindApproval, WorkflowKindLifecy
// WorkflowKinds lists all valid workflow kinds as strings.
var WorkflowKinds = stringValues(workflowKindValues)

func (WorkflowKind) Values() []string { return WorkflowKinds }
func (r WorkflowKind) String() string { return string(r) }
func ToWorkflowKind(v string) *WorkflowKind { return parse(v, workflowKindValues, nil) }
func (r WorkflowKind) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (WorkflowKind) Values() []string { return WorkflowKinds }
func (r WorkflowKind) String() string { return string(r) }
func ToWorkflowKind(v string) *WorkflowKind { return parse(v, workflowKindValues, nil) }
func (r WorkflowKind) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowKind) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

// WorkflowInstanceState enumerates instance states.
Expand All @@ -39,11 +39,13 @@ var workflowInstanceStateValues = []WorkflowInstanceState{
// WorkflowInstanceStates lists all valid workflow instance states as strings.
var WorkflowInstanceStates = stringValues(workflowInstanceStateValues)

func (WorkflowInstanceState) Values() []string { return WorkflowInstanceStates }
func (r WorkflowInstanceState) String() string { return string(r) }
func ToWorkflowInstanceState(v string) *WorkflowInstanceState { return parse(v, workflowInstanceStateValues, nil) }
func (r WorkflowInstanceState) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowInstanceState) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
func (WorkflowInstanceState) Values() []string { return WorkflowInstanceStates }
func (r WorkflowInstanceState) String() string { return string(r) }
func ToWorkflowInstanceState(v string) *WorkflowInstanceState {
return parse(v, workflowInstanceStateValues, nil)
}
func (r WorkflowInstanceState) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowInstanceState) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

// WorkflowAssignmentStatus enumerates assignment statuses.
type WorkflowAssignmentStatus string
Expand All @@ -63,11 +65,13 @@ var workflowAssignmentStatusValues = []WorkflowAssignmentStatus{
// WorkflowAssignmentStatuses lists all valid workflow assignment statuses as strings.
var WorkflowAssignmentStatuses = stringValues(workflowAssignmentStatusValues)

func (WorkflowAssignmentStatus) Values() []string { return WorkflowAssignmentStatuses }
func (r WorkflowAssignmentStatus) String() string { return string(r) }
func ToWorkflowAssignmentStatus(v string) *WorkflowAssignmentStatus { return parse(v, workflowAssignmentStatusValues, nil) }
func (r WorkflowAssignmentStatus) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowAssignmentStatus) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
func (WorkflowAssignmentStatus) Values() []string { return WorkflowAssignmentStatuses }
func (r WorkflowAssignmentStatus) String() string { return string(r) }
func ToWorkflowAssignmentStatus(v string) *WorkflowAssignmentStatus {
return parse(v, workflowAssignmentStatusValues, nil)
}
func (r WorkflowAssignmentStatus) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowAssignmentStatus) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

// WorkflowProposalState enumerates proposal lifecycle states.
type WorkflowProposalState string
Expand All @@ -88,11 +92,13 @@ var workflowProposalStateValues = []WorkflowProposalState{
// WorkflowProposalStates lists all valid workflow proposal states as strings.
var WorkflowProposalStates = stringValues(workflowProposalStateValues)

func (WorkflowProposalState) Values() []string { return WorkflowProposalStates }
func (r WorkflowProposalState) String() string { return string(r) }
func ToWorkflowProposalState(v string) *WorkflowProposalState { return parse(v, workflowProposalStateValues, nil) }
func (r WorkflowProposalState) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowProposalState) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
func (WorkflowProposalState) Values() []string { return WorkflowProposalStates }
func (r WorkflowProposalState) String() string { return string(r) }
func ToWorkflowProposalState(v string) *WorkflowProposalState {
return parse(v, workflowProposalStateValues, nil)
}
func (r WorkflowProposalState) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowProposalState) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

// WorkflowApprovalSubmissionMode enumerates how approval workflows are triggered for a domain.
type WorkflowApprovalSubmissionMode string
Expand All @@ -109,11 +115,13 @@ var workflowApprovalSubmissionModeValues = []WorkflowApprovalSubmissionMode{
// WorkflowApprovalSubmissionModes lists all valid workflow approval submission modes as strings.
var WorkflowApprovalSubmissionModes = stringValues(workflowApprovalSubmissionModeValues)

func (WorkflowApprovalSubmissionMode) Values() []string { return WorkflowApprovalSubmissionModes }
func (r WorkflowApprovalSubmissionMode) String() string { return string(r) }
func ToWorkflowApprovalSubmissionMode(v string) *WorkflowApprovalSubmissionMode { return parse(v, workflowApprovalSubmissionModeValues, nil) }
func (r WorkflowApprovalSubmissionMode) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowApprovalSubmissionMode) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
func (WorkflowApprovalSubmissionMode) Values() []string { return WorkflowApprovalSubmissionModes }
func (r WorkflowApprovalSubmissionMode) String() string { return string(r) }
func ToWorkflowApprovalSubmissionMode(v string) *WorkflowApprovalSubmissionMode {
return parse(v, workflowApprovalSubmissionModeValues, nil)
}
func (r WorkflowApprovalSubmissionMode) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowApprovalSubmissionMode) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

// WorkflowTargetType enumerates assignment target types.
type WorkflowTargetType string
Expand All @@ -133,11 +141,13 @@ var workflowTargetTypeValues = []WorkflowTargetType{
// WorkflowTargetTypes lists all valid workflow target types as strings.
var WorkflowTargetTypes = stringValues(workflowTargetTypeValues)

func (WorkflowTargetType) Values() []string { return WorkflowTargetTypes }
func (r WorkflowTargetType) String() string { return string(r) }
func ToWorkflowTargetType(v string) *WorkflowTargetType { return parse(v, workflowTargetTypeValues, nil) }
func (r WorkflowTargetType) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowTargetType) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
func (WorkflowTargetType) Values() []string { return WorkflowTargetTypes }
func (r WorkflowTargetType) String() string { return string(r) }
func ToWorkflowTargetType(v string) *WorkflowTargetType {
return parse(v, workflowTargetTypeValues, nil)
}
func (r WorkflowTargetType) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowTargetType) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

// WorkflowObjectType is auto-generated in workflow_object_type.go
// The enum values are dynamically generated based on entities with ApprovalRequiredMixin.
Expand Down Expand Up @@ -167,11 +177,13 @@ var workflowActionTypeValues = []WorkflowActionType{
// WorkflowActionTypes lists all valid workflow action types as strings.
var WorkflowActionTypes = stringValues(workflowActionTypeValues)

func (WorkflowActionType) Values() []string { return WorkflowActionTypes }
func (r WorkflowActionType) String() string { return string(r) }
func ToWorkflowActionType(v string) *WorkflowActionType { return parse(v, workflowActionTypeValues, nil) }
func (r WorkflowActionType) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowActionType) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
func (WorkflowActionType) Values() []string { return WorkflowActionTypes }
func (r WorkflowActionType) String() string { return string(r) }
func ToWorkflowActionType(v string) *WorkflowActionType {
return parse(v, workflowActionTypeValues, nil)
}
func (r WorkflowActionType) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowActionType) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

// WorkflowEventType enumerates event types.
type WorkflowEventType string
Expand Down Expand Up @@ -209,11 +221,11 @@ var workflowEventTypeValues = []WorkflowEventType{
// WorkflowEventTypes lists all valid workflow event types as strings.
var WorkflowEventTypes = stringValues(workflowEventTypeValues)

func (WorkflowEventType) Values() []string { return WorkflowEventTypes }
func (r WorkflowEventType) String() string { return string(r) }
func (WorkflowEventType) Values() []string { return WorkflowEventTypes }
func (r WorkflowEventType) String() string { return string(r) }
func ToWorkflowEventType(v string) *WorkflowEventType { return parse(v, workflowEventTypeValues, nil) }
func (r WorkflowEventType) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowEventType) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
func (r *WorkflowEventType) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

// WorkflowApprovalTiming enumerates when approvals should block changes.
type WorkflowApprovalTiming string
Expand All @@ -230,8 +242,10 @@ var workflowApprovalTimingValues = []WorkflowApprovalTiming{
// WorkflowApprovalTimings lists all valid workflow approval timings as strings.
var WorkflowApprovalTimings = stringValues(workflowApprovalTimingValues)

func (WorkflowApprovalTiming) Values() []string { return WorkflowApprovalTimings }
func (r WorkflowApprovalTiming) String() string { return string(r) }
func ToWorkflowApprovalTiming(v string) *WorkflowApprovalTiming { return parse(v, workflowApprovalTimingValues, nil) }
func (r WorkflowApprovalTiming) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowApprovalTiming) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
func (WorkflowApprovalTiming) Values() []string { return WorkflowApprovalTimings }
func (r WorkflowApprovalTiming) String() string { return string(r) }
func ToWorkflowApprovalTiming(v string) *WorkflowApprovalTiming {
return parse(v, workflowApprovalTimingValues, nil)
}
func (r WorkflowApprovalTiming) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
func (r *WorkflowApprovalTiming) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }
Loading