package schema import ( "time" "entgo.io/ent" "entgo.io/ent/dialect/entsql" "entgo.io/ent/schema" "entgo.io/ent/schema/edge" "entgo.io/ent/schema/field" "github.com/google/uuid" ) // Categorie represente un noeud de l'arbre de categories. type Categorie struct { ent.Schema } // Fields de l'entite Categorie. func (Categorie) Fields() []ent.Field { return []ent.Field{ field.UUID("id", uuid.UUID{}). Default(uuid.New). Comment("Identifiant unique de la categorie"), field.String("nom"). NotEmpty(). Comment("Nom de la categorie"), field.UUID("parent_id", uuid.UUID{}). Optional(). Nillable(). Comment("Identifiant du parent"), field.String("slug"). Optional(). Nillable(). Comment("Slug URL-friendly"), field.String("icone"). Optional(). Nillable(). Comment("Nom ou code d'icone"), field.Time("created_at"). Default(time.Now). Comment("Date de creation"), field.Time("updated_at"). Default(time.Now). UpdateDefault(time.Now). Comment("Date de derniere mise a jour"), } } // Annotations pour le nom de table. func (Categorie) Annotations() []schema.Annotation { return []schema.Annotation{ entsql.Annotation{Table: "categorie"}, } } // Edges de l'entite Categorie. func (Categorie) Edges() []ent.Edge { return []ent.Edge{ edge.To("enfants", Categorie.Type). From("parent"). Unique(). Field("parent_id"). Comment("Lien parent/enfants pour l'arbre des categories"), } }