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  }