github.com/ngocphuongnb/tetua@v0.0.7-alpha/packages/entrepository/ent/schema/user.go (about) 1 package schema 2 3 import ( 4 "entgo.io/ent" 5 "entgo.io/ent/dialect/entsql" 6 "entgo.io/ent/schema" 7 "entgo.io/ent/schema/edge" 8 "entgo.io/ent/schema/field" 9 "entgo.io/ent/schema/index" 10 ) 11 12 // User holds the schema definition for the User entity. 13 type User struct { 14 ent.Schema 15 } 16 17 // Fields of the User. 18 func (User) Fields() []ent.Field { 19 return []ent.Field{ 20 field.String("username").Unique(), 21 field.String("display_name").Optional(), 22 field.String("url").Optional(), 23 field.String("provider").Optional(), 24 field.String("provider_id").Optional(), 25 field.String("provider_username").Optional(), 26 field.String("provider_avatar").Optional(), 27 field.String("email").Optional(), 28 field.String("password").Optional(), 29 field.Text("bio").Optional(), 30 field.Text("bio_html").Optional(), 31 field.Bool("active").Default(true), 32 field.Int("avatar_image_id").Optional(), 33 } 34 } 35 36 // Edges of the User. 37 func (User) Edges() []ent.Edge { 38 return []ent.Edge{ 39 edge.To("posts", Post.Type). 40 Annotations(ondeleteSetNull). 41 StorageKey(edge.Column("user_id"), edge.Symbol("post_user")), 42 edge.To("files", File.Type). 43 Annotations(ondeleteSetNull). 44 StorageKey(edge.Column("user_id"), edge.Symbol("file_user")), 45 edge.To("comments", Comment.Type). 46 Annotations(ondeleteSetNull). 47 StorageKey(edge.Column("user_id"), edge.Symbol("comment_user")), 48 edge.From("roles", Role.Type).Ref("users"), 49 edge.From("avatar_image", File.Type).Ref("user_avatars").Field("avatar_image_id").Unique(), 50 } 51 } 52 53 func (User) Indexes() []ent.Index { 54 return []ent.Index{ 55 index.Fields("provider", "provider_id").Unique().StorageKey("provider_provider_id_unique"), 56 } 57 } 58 59 func (User) Annotations() []schema.Annotation { 60 return []schema.Annotation{ 61 entsql.Annotation{ 62 Charset: "utf8mb4", 63 Collation: "utf8mb4_unicode_ci", 64 }, 65 } 66 } 67 68 func (User) Mixin() []ent.Mixin { 69 return []ent.Mixin{ 70 TimeStamp{}, 71 } 72 }