# `Chronicle.Events.MigrationBuilder`
[🔗](https://github.com/Cratis/Chronicle.Elixir/blob/main/lib/chronicle/events/migration_builder.ex#L4)

Fluent builder for event migration property transformations.

The builder produces the JMESPath-compatible JSON fragments Chronicle expects
when registering event type migrations.

# `property_name`

```elixir
@type property_name() :: atom() | String.t()
```

# `t`

```elixir
@type t() :: %Chronicle.Events.MigrationBuilder{properties: map()}
```

# `combine_properties`

```elixir
@spec combine_properties(t(), [property_name()], property_name(), String.t()) :: t()
```

Combines multiple source properties into a target property.

# `copy_property`

```elixir
@spec copy_property(t(), property_name()) :: t()
```

Copies a property unchanged.

Since Chronicle preserves unspecified properties automatically, the single
argument form is a no-op that keeps pipeline code expressive.

# `copy_property`

```elixir
@spec copy_property(t(), property_name(), property_name()) :: t()
```

Copies a property from one name to another.

# `default_value`

```elixir
@spec default_value(t(), property_name(), term()) :: t()
```

Sets a default value for a property.

# `new`

```elixir
@spec new() :: t()
```

Creates an empty migration builder.

# `rename_property`

```elixir
@spec rename_property(t(), property_name(), property_name()) :: t()
```

Renames a property from `source_property` to `target_property`.

# `renamed_from`

```elixir
@spec renamed_from(t(), property_name(), property_name()) :: t()
```

Alias for `rename_property/3` with the target property first.

# `set_property`

```elixir
@spec set_property(t(), property_name(), term()) :: t()
```

Alias for `default_value/3`.

# `split_property`

```elixir
@spec split_property(
  t(),
  property_name(),
  property_name(),
  String.t(),
  non_neg_integer()
) :: t()
```

Splits a source property and maps one part to a target property.

# `to_json`

```elixir
@spec to_json(t()) :: String.t()
```

Returns the builder as JSON.

# `to_map`

```elixir
@spec to_map(t()) :: map()
```

Returns the builder as a map.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
