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" ) // PieceJointe represente un fichier associe a un objet. type PieceJointe struct { ent.Schema } // Fields de l'entite PieceJointe. func (PieceJointe) Fields() []ent.Field { return []ent.Field{ field.UUID("id", uuid.UUID{}). Default(uuid.New). Comment("Identifiant unique de la piece jointe"), field.UUID("objet_id", uuid.UUID{}). Comment("Identifiant de l'objet"), field.String("nom_fichier"). NotEmpty(). Comment("Nom du fichier"), field.String("chemin"). NotEmpty(). Comment("Chemin de stockage"), field.String("type_mime"). NotEmpty(). Comment("Type MIME"), field.Bool("est_principale"). Default(false). Comment("Piece jointe principale"), field.Enum("categorie"). Values("image", "pdf_notice", "markdown_tuto"). Default("image"). Comment("Categorie de la piece jointe"), 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 (PieceJointe) Annotations() []schema.Annotation { return []schema.Annotation{ entsql.Annotation{Table: "piece_jointe"}, } } // Edges de l'entite PieceJointe. func (PieceJointe) Edges() []ent.Edge { return []ent.Edge{ edge.From("objet", Objet.Type). Ref("pieces_jointes"). Unique(). Field("objet_id"). Required(), } }