/ ent / schema / feed.go
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  }