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 }