Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FieldIR ¶
type FieldIR struct {
Name string // Field name
Type string // Field type as string (e.g., "String", "UUID", "Enum")
Modifiers []ModifierIR // Applied modifiers
EnumValues []string // For Enum fields, the allowed values
SourceLine int // Line number in source file
}
FieldIR represents a parsed field definition.
type HooksIR ¶
type HooksIR struct {
AfterCreate []JobRefIR // Jobs to enqueue after resource creation
AfterUpdate []JobRefIR // Jobs to enqueue after resource update
}
HooksIR represents lifecycle job enqueueing declarations for a resource. AfterCreate jobs are enqueued transactionally on CREATE; AfterUpdate on UPDATE.
type JobRefIR ¶
type JobRefIR struct {
Kind string // River job worker kind (e.g., "notify_new_product")
Queue string // River queue name (e.g., "notifications")
}
JobRefIR represents a River job reference extracted from a schema.JobRef literal. Kind is the job worker kind string; Queue is the River queue name.
type ModifierIR ¶
type ModifierIR struct {
Type string // Modifier name (e.g., "Required", "MaxLen", "Default")
Value interface{} // Modifier argument if any (int for MaxLen, string for Default, etc.)
SourceLine int // Line number in source file
}
ModifierIR represents a parsed modifier on a field.
type ParseResult ¶
type ParseResult struct {
Resources []ResourceIR // All successfully parsed resources
Errors []error // All parse errors collected during parsing
}
ParseResult represents the output of parsing a directory of schema files. It collects all resources and all errors encountered (not just the first one).
func ParseDir ¶
func ParseDir(dir string) (*ParseResult, error)
ParseDir finds all schema.go files in subdirectories and parses them. It looks for the pattern resources/*/schema.go
func ParseFile ¶
func ParseFile(path string) (*ParseResult, error)
ParseFile parses a single schema file.
func ParseString ¶
func ParseString(source, filename string) (*ParseResult, error)
ParseString parses a schema definition from a string. This is primarily for testing.
type PermissionsIR ¶
PermissionsIR maps operation names to the roles allowed to perform them. Example: {"list": ["admin", "editor"], "delete": ["admin"]}
type RelationshipIR ¶
type RelationshipIR struct {
Name string // Relationship name
Type string // "BelongsTo", "HasMany", "HasOne", "ManyToMany"
Table string // Related table name
OnDelete string // Cascade action (empty string = default)
Optional bool // Whether relationship is optional
Eager bool // Whether to eager-load this relationship
SourceLine int // Line number in source file
}
RelationshipIR represents a parsed relationship definition.
type ResourceIR ¶
type ResourceIR struct {
Name string // Resource name (e.g., "Product")
Fields []FieldIR // Parsed fields
Relationships []RelationshipIR // Parsed relationships
Options ResourceOptionsIR // Resource-level options
HasTimestamps bool // Whether schema.Timestamps() was called
SourceFile string // Original file path for error reporting
SourceLine int // Line number of schema.Define() call
}
ResourceIR represents a top-level parsed resource definition. This is the domain model IR that the parser produces and the code generator consumes.
type ResourceOptionsIR ¶
type ResourceOptionsIR struct {
SoftDelete bool // Enable soft delete
Auditable bool // Enable audit logging
TenantScoped bool // Enable multi-tenancy scoping
Searchable bool // Enable full-text search
Permissions PermissionsIR // Role-based permission rules per operation
Hooks HooksIR // Lifecycle River job enqueueing declarations
}
ResourceOptionsIR represents resource-level options.