mirror of
https://github.com/ent/ent.git
synced 2026-05-04 00:20:58 +03:00
83 lines
2.1 KiB
Plaintext
83 lines
2.1 KiB
Plaintext
---
|
|
id: enable-ff
|
|
title: Enabling Versioned Migrations
|
|
---
|
|
|
|
import Tabs from '@theme/Tabs';
|
|
import TabItem from '@theme/TabItem';
|
|
|
|
## Supporting repository
|
|
|
|
The change described in this section can be found in PR [#2](https://github.com/rotemtam/ent-versioned-migrations-demo/pull/2/files)
|
|
in the supporting repository.
|
|
|
|
## Enable the versioned migration feature flag
|
|
|
|
The first step is to enable the versioned migration feature by passing in the `sql/versioned-migration` feature flag.
|
|
Depending on how you execute the Ent code generator, you have to use one of the two options:
|
|
|
|
<Tabs
|
|
defaultValue="ent"
|
|
values={[
|
|
{label: 'Using Ent CLI', value: 'ent'},
|
|
{label: 'Using the entc package', value: 'entc'},
|
|
]}>
|
|
<TabItem value="ent">
|
|
|
|
If you are using the default go generate configuration, simply add the `--feature sql/versioned-migration` to
|
|
the `ent/generate.go` file as follows:
|
|
|
|
```go
|
|
package ent
|
|
|
|
//go:generate go run -mod=mod entgo.io/ent/cmd/ent generate --feature sql/versioned-migration ./schema
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="entc">
|
|
|
|
If you are using the code generation package (e.g. if you are using an Ent extension like `entgql`),
|
|
add the feature flag as follows:
|
|
|
|
```go
|
|
//go:build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"entgo.io/ent/entc"
|
|
"entgo.io/ent/entc/gen"
|
|
)
|
|
|
|
func main() {
|
|
err := entc.Generate("./schema", &gen.Config{
|
|
//highlight-next-line
|
|
Features: []gen.Feature{gen.FeatureVersionedMigration},
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("running ent codegen: %v", err)
|
|
}
|
|
}
|
|
```
|
|
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
Next, re-run code-generation:
|
|
|
|
```shell
|
|
go generate ./...
|
|
```
|
|
|
|
After running the code-generation, you should see the following
|
|
[methods added](https://github.com/rotemtam/ent-versioned-migrations-demo/commit/e724fa32330d920fd405b9785fcfece2a46ea56c#diff-370235e5107bbdd35861063f3beff1507723ebdda6e29a39cdde1f1a944594d8)
|
|
to `ent/migrate/migrate.go`:
|
|
* `Diff`
|
|
* `NamedDiff`
|
|
|
|
These methods are used to compare the state read from a database connection or migration directory with the state defined
|
|
by the Ent schema.
|
|
|
|
In the next section, we will see how to automate the creation of versioned migrations. |