package schema import ( "entgo.io/ent" "entgo.io/ent/schema/edge" "entgo.io/ent/schema/field" "entgo.io/ent/schema/index" "entgo.io/ent/schema/mixin" "github.com/google/uuid" ) type Index struct { ent.Schema } func (Index) Fields() []ent.Field { return []ent.Field{ field.UUID("id", uuid.UUID{}). Default(uuid.New). Immutable(). Unique(), field.UUID("site_id", uuid.UUID{}). Default(uuid.New). Immutable(). Unique(), field.String("name"). NotEmpty(), field.String("revision"). Immutable(). NotEmpty(), } } func (Index) Edges() []ent.Edge { return []ent.Edge{ edge.From("index", Site.Type). Field("site_id"). Ref("indices"). Unique(). Immutable(). Required(), } } func (Index) Indexes() []ent.Index { return []ent.Index{ index.Fields("site_id", "name", "revision"). Unique(), } } func (Index) Mixin() []ent.Mixin { return []ent.Mixin{ mixin.Time{}, } }