/ ent / schema / user.go
user.go
 1  package schema
 2  
 3  import (
 4  	"regexp"
 5  	"time"
 6  
 7  	"github.com/go-playground/validator/v10"
 8  
 9  	"entgo.io/ent"
10  	"entgo.io/ent/schema/edge"
11  	"entgo.io/ent/schema/field"
12  	"github.com/google/uuid"
13  )
14  
15  // User holds the schema definition for the User entity.
16  type User struct {
17  	ent.Schema
18  }
19  
20  // Fields of the User.
21  func (User) 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("username").
29  			Validate(func(s string) error {
30  				return validate.Var(s, "required,alphanum,max=32")
31  			}).
32  			Unique(),
33  		field.String("password").
34  			Validate(func(s string) error {
35  				return validate.Var(s, "required,min=5")
36  			}).
37  			Sensitive(),
38  		field.String("role").
39  			Default("user").
40  			Match(regexp.MustCompile("^(admin|user)$")),
41  		field.Time("created_at").
42  			Default(time.Now),
43  		field.Time("updated_at").
44  			Default(time.Now).
45  			UpdateDefault(time.Now),
46  		field.Time("deleted_at").
47  			Default(nil).
48  			Optional().
49  			Nillable(),
50  	}
51  }
52  
53  // Edges of the User.
54  func (User) Edges() []ent.Edge {
55  	return []ent.Edge{
56  		edge.To("tokens", Token.Type),
57  		edge.To("subscribed_feeds", Feed.Type).
58  			Through("subscriptions", Subscription.Type),
59  		edge.To("read_items", Item.Type).
60  			Through("reads", Read.Type),
61  	}
62  }