DSL Reference
Complete reference for the FakeDataDSL syntax.
Schema Definition
A schema starts with a name followed by a colon:
SchemaName:
field1: type1
field2: type2
Field Types
Basic Types
User:
id: uuid # UUID v4
name: name # Full name
email: email # Email address
age: number(18..65) # Number in range
active: boolean # True/false
bio: text(100..500) # Text with length range
Type Arguments
Many types accept arguments:
User:
age: number(18..65) # Range
price: number(min: 10, max: 100) # Min/max
status: enum(active, inactive, pending) # Enum values
tags: array(text, 3..10) # Array with element type and size
Nullable Fields
Add ? to make a field nullable:
User:
middle_name: name? # May be null
nickname: text? # Optional field
Optional Fields
Use optional modifier to omit fields sometimes:
User:
phone: phone optional # May be omitted
Comments
Use # for comments:
User:
# Primary identifier
id: uuid
name: name # User's full name
Behaviors
Behaviors modify how data is generated:
Schema-Level Behaviors
User:
@latency 100ms # Add 100ms delay
@failure 5% # 5% chance of failure
id: uuid
name: name
Field-Level Behaviors
User:
id: uuid @latency 50ms
name: name @failure 1%
See Behaviors Guide for details.
Arrays
Generate arrays of values:
User:
tags: array(text, 3..10) # 3-10 text items
scores: array(number(0..100), 5) # Exactly 5 numbers
Nested Objects
Use the object type for nested structures:
User:
address: object(
street: text,
city: city,
zip: postal_code
)
References
Reference other schemas:
User:
id: uuid
name: name
Order:
id: uuid
user_id: reference(User, id) # Reference User's id field
Custom Functions
Use custom functions for computed values:
User:
id: uuid
name: name
slug: custom(:generate_slug) # Custom function
Conditional Fields
Fields can be conditional:
User:
is_admin: boolean
admin_key: text if is_admin # Only if is_admin is true
Multiple Schemas
Define multiple schemas in one file:
User:
id: uuid
name: name
Order:
id: uuid
user_id: reference(User, id)
total: number(10..1000)
See Also
- Type Reference - Complete list of types
- Examples - Usage examples