snapshot of https://github.com/ent/ent.git (master, 2026-09-15; blobs > 131072B omitted)
This commit is contained in:
43
schema/schema.go
Normal file
43
schema/schema.go
Normal file
@@ -0,0 +1,43 @@
|
||||
// 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 schema
|
||||
|
||||
// Annotation is used to attach arbitrary metadata to the schema objects in codegen.
|
||||
// The object must be serializable to JSON raw value (e.g. struct, map or slice).
|
||||
//
|
||||
// Template extensions can retrieve this metadata and use it inside their templates.
|
||||
// Read more about it in ent website: https://entgo.io/docs/templates/#annotations.
|
||||
type Annotation interface {
|
||||
// Name defines the name of the annotation to be retrieved by the codegen.
|
||||
Name() string
|
||||
}
|
||||
|
||||
// Merger wraps the single Merge function allows custom annotation to provide
|
||||
// an implementation for merging 2 or more annotations from the same type.
|
||||
//
|
||||
// A common use case is where the same Annotation type is defined both in
|
||||
// mixin.Schema and ent.Schema.
|
||||
type Merger interface {
|
||||
Merge(Annotation) Annotation
|
||||
}
|
||||
|
||||
// CommentAnnotation is a builtin schema annotation for
|
||||
// configuring the schema's Godoc comment.
|
||||
type CommentAnnotation struct {
|
||||
Text string // Comment text.
|
||||
}
|
||||
|
||||
// Name implements the Annotation interface.
|
||||
func (*CommentAnnotation) Name() string {
|
||||
return "Comment"
|
||||
}
|
||||
|
||||
// Comment is a builtin schema annotation for
|
||||
// configuring the schema's Godoc comment.
|
||||
func Comment(text string) *CommentAnnotation {
|
||||
return &CommentAnnotation{Text: text}
|
||||
}
|
||||
|
||||
var _ Annotation = (*CommentAnnotation)(nil)
|
||||
Reference in New Issue
Block a user