mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
118 lines
3.3 KiB
Go
118 lines
3.3 KiB
Go
// Copyright 2019-present Facebook Inc. All rights reserved.
|
|
// This source code is licensed under the Apache 2.0 license found
|
|
// in the LICENSE file in the root directory of this source tree.
|
|
|
|
package gen
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
var (
|
|
// FeaturePrivacy provides a feature-flag for the privacy extension for ent.
|
|
FeaturePrivacy = Feature{
|
|
Name: "privacy",
|
|
Stage: Alpha,
|
|
Default: false,
|
|
Description: "Privacy provides a privacy layer for ent through the schema configuration",
|
|
cleanup: func(c *Config) error {
|
|
return os.RemoveAll(filepath.Join(c.Target, "privacy"))
|
|
},
|
|
}
|
|
|
|
// FeatureEntQL provides a feature-flag for the entql extension for ent.
|
|
FeatureEntQL = Feature{
|
|
Name: "entql",
|
|
Stage: Experimental,
|
|
Default: false,
|
|
Description: "EntQL provides a generic filtering capability at runtime",
|
|
cleanup: func(c *Config) error {
|
|
return os.RemoveAll(filepath.Join(c.Target, "entql.go"))
|
|
},
|
|
}
|
|
|
|
// FeatureSnapshot stores a snapshot of ent/schema and auto-solve merge-conflict (issue #852).
|
|
FeatureSnapshot = Feature{
|
|
Name: "schema/snapshot",
|
|
Stage: Experimental,
|
|
Default: false,
|
|
Description: "Schema snapshot stores a snapshot of ent/schema and auto-solve merge-conflict (issue #852)",
|
|
cleanup: func(c *Config) error {
|
|
return os.RemoveAll(filepath.Join(c.Target, "internal"))
|
|
},
|
|
}
|
|
|
|
// FeatureSchemaConfig allows users to pass init time alternate schema names
|
|
// for each ent model. This is useful if your SQL tables are spread out against
|
|
// multiple databases.
|
|
FeatureSchemaConfig = Feature{
|
|
Name: "sql/schemaconfig",
|
|
Stage: Experimental,
|
|
Default: false,
|
|
Description: "Allows alternate schema names for each ent model. Useful if SQL tables are spread out against multiple databases",
|
|
GraphTemplates: []GraphTemplate{
|
|
{
|
|
Name: "dialect/sql/internal/schemaconfig",
|
|
Format: "internal/schemaconfig.go",
|
|
},
|
|
},
|
|
cleanup: func(c *Config) error {
|
|
return os.RemoveAll(filepath.Join(c.Target, "internal"))
|
|
},
|
|
}
|
|
|
|
// AllFeatures holds a list of all feature-flags.
|
|
AllFeatures = []Feature{
|
|
FeaturePrivacy,
|
|
FeatureEntQL,
|
|
FeatureSnapshot,
|
|
FeatureSchemaConfig,
|
|
}
|
|
)
|
|
|
|
// FeatureStage describes the stage of the codegen feature.
|
|
type FeatureStage int
|
|
|
|
const (
|
|
_ FeatureStage = iota
|
|
|
|
// Experimental features are in development, and actively being tested in the
|
|
// integration environment.
|
|
Experimental
|
|
|
|
// Alpha features are features whose initial development was finished, tested
|
|
// on the infra of the ent team, but we expect breaking-changes to their APIs.
|
|
Alpha
|
|
|
|
// Beta features are Alpha features that were added to the entgo.io
|
|
// documentation, and no breaking-changes are expected for them.
|
|
Beta
|
|
|
|
// Stable features are Beta features that were running for a while on ent
|
|
// infra.
|
|
Stable
|
|
)
|
|
|
|
// A Feature of the ent codegen.
|
|
type Feature struct {
|
|
// Name of the feature.
|
|
Name string
|
|
|
|
// Stage of the feature.
|
|
Stage FeatureStage
|
|
|
|
// Default values indicates if this feature is enabled by default.
|
|
Default bool
|
|
|
|
// A Description of this feature.
|
|
Description string
|
|
|
|
// GraphTemplates defines optional templates to be executed on the graph.
|
|
GraphTemplates []GraphTemplate
|
|
|
|
// cleanup used to cleanup all changes when a feature-flag is removed.
|
|
// e.g. delete files from previous codegen runs.
|
|
cleanup func(*Config) error
|
|
}
|