Skip to content
9 changes: 9 additions & 0 deletions internal/schema/pkl/schema/formae.pkl
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,14 @@ open class FieldHint extends Annotation {
hidden required: Boolean = false
hidden requiredOnCreate: Boolean = false
hidden hasProviderDefault: Boolean = false

/// Glob patterns for provider-injected Mapping keys.
/// When hasProviderDefault = true on a Mapping field:
/// - null/empty: tolerate ALL extra keys (broad tolerance)
/// - non-empty: only tolerate keys matching at least one pattern
/// Patterns use filepath.Match syntax (e.g., "provider.example.com/*").
hidden providerDefaultKeyPatterns: Listing<String>?

hidden indexField: String?
hidden updateMethod: FieldUpdateMethod?

Expand All @@ -189,6 +197,7 @@ open class FieldHint extends Annotation {
fixed Required: Boolean = required
fixed RequiredOnCreate: Boolean = requiredOnCreate
fixed HasProviderDefault: Boolean = hasProviderDefault
fixed ProviderDefaultKeyPatterns: Listing<String>? = providerDefaultKeyPatterns
fixed UpdateMethod: String = updateMethod ?? ""
fixed IndexField: String = indexField ?? ""
}
Expand Down
25 changes: 25 additions & 0 deletions internal/schema/pkl/schema/tests/formae.pkl-expected.pcf
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -98,6 +99,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -107,6 +109,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -127,6 +130,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -136,6 +140,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -145,6 +150,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand Down Expand Up @@ -193,6 +199,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -202,6 +209,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -211,6 +219,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand Down Expand Up @@ -267,6 +276,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -276,6 +286,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -285,6 +296,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand Down Expand Up @@ -326,6 +338,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -335,6 +348,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -344,6 +358,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -353,6 +368,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -362,6 +378,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -371,6 +388,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -380,6 +398,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand Down Expand Up @@ -416,6 +435,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -425,6 +445,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -434,6 +455,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -454,6 +476,7 @@ examples {
Required = true
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -463,6 +486,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand All @@ -472,6 +496,7 @@ examples {
Required = false
RequiredOnCreate = false
HasProviderDefault = false
ProviderDefaultKeyPatterns = null
UpdateMethod = ""
IndexField = ""
}
Expand Down
6 changes: 6 additions & 0 deletions pkg/model/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ type FieldHint struct {
RequiredOnCreate bool `json:"RequiredOnCreate" pkl:"RequiredOnCreate"`
HasProviderDefault bool `json:"HasProviderDefault" pkl:"HasProviderDefault"`

// ProviderDefaultKeyPatterns specifies glob patterns for provider-injected
// Mapping keys. When HasProviderDefault is true on a Mapping field:
// - empty: tolerate ALL extra keys in the Mapping
// - non-empty: only tolerate keys matching at least one pattern
ProviderDefaultKeyPatterns []string `json:"ProviderDefaultKeyPatterns,omitempty" pkl:"ProviderDefaultKeyPatterns"`

IndexField string `json:"IndexField" pkl:"IndexField"`
UpdateMethod FieldUpdateMethod `json:"UpdateMethod" pkl:"UpdateMethod"`
}
Expand Down
Loading
Loading