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" ) // LienObjetEmplacement represente un lien entre un objet et un emplacement. type LienObjetEmplacement struct { ent.Schema } // Fields de l'entite LienObjetEmplacement. func (LienObjetEmplacement) Fields() []ent.Field { return []ent.Field{ field.UUID("id", uuid.UUID{}). Default(uuid.New). Comment("Identifiant unique du lien"), field.UUID("objet_id", uuid.UUID{}). Comment("Identifiant de l'objet"), field.UUID("emplacement_id", uuid.UUID{}). Comment("Identifiant de l'emplacement"), field.Enum("type"). Values("stocke", "utilise_dans"). Default("stocke"). Comment("Type de relation"), 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 (LienObjetEmplacement) Annotations() []schema.Annotation { return []schema.Annotation{ entsql.Annotation{Table: "lien_objet_emplacement"}, } } // Edges de l'entite LienObjetEmplacement. func (LienObjetEmplacement) Edges() []ent.Edge { return []ent.Edge{ edge.From("objet", Objet.Type). Ref("liens_emplacements"). Unique(). Field("objet_id"). Required(), edge.From("emplacement", Emplacement.Type). Ref("liens_objets"). Unique(). Field("emplacement_id"). Required(), } }