feed.go
1 package schema 2 3 import ( 4 "time" 5 6 "github.com/go-playground/validator/v10" 7 8 "entgo.io/ent" 9 "entgo.io/ent/schema/edge" 10 "entgo.io/ent/schema/field" 11 "entgo.io/ent/schema/index" 12 "github.com/google/uuid" 13 ) 14 15 // Feed holds the schema definition for the Feed entity. 16 type Feed struct { 17 ent.Schema 18 } 19 20 // Fields of the Feed. 21 func (Feed) Fields() []ent.Field { 22 validate := validator.New() 23 24 return []ent.Field{ 25 field.UUID("id", uuid.UUID{}). 26 Default(uuid.New), 27 // StorageKey("oid"), 28 field.String("url"). 29 Validate(func(s string) error { 30 return validate.Var(s, "required,url") 31 }), 32 field.String("username"). 33 Default(""). 34 Sensitive(), 35 field.String("password"). 36 Default(""). 37 Sensitive(), 38 39 field.String("feed_title"), 40 field.String("feed_description"), 41 field.String("feed_link"), 42 field.String("feed_feed_link"), 43 field.Time("feed_updated"), 44 field.Time("feed_published"), 45 field.String("feed_author_name"). 46 Optional(), 47 field.String("feed_author_email"). 48 Optional(), 49 field.String("feed_language"), 50 field.String("feed_image_title"). 51 Optional(), 52 field.String("feed_image_url"). 53 Optional(), 54 field.String("feed_copyright"), 55 field.String("feed_generator"), 56 field.String("feed_categories"), 57 58 field.Time("created_at"). 59 Default(time.Now), 60 field.Time("updated_at"). 61 Default(time.Now). 62 UpdateDefault(time.Now), 63 field.Time("deleted_at"). 64 Default(nil). 65 Optional(). 66 Nillable(), 67 } 68 } 69 70 func (Feed) Indexes() []ent.Index { 71 return []ent.Index{ 72 index.Fields("url", "username", "password"). 73 Unique(), 74 } 75 } 76 77 // Edges of the Feed. 78 func (Feed) Edges() []ent.Edge { 79 return []ent.Edge{ 80 edge.To("items", Item.Type), 81 edge.From("subscribed_users", User.Type). 82 Ref("subscribed_feeds"). 83 Through("subscriptions", Subscription.Type), 84 } 85 }