github.com/ngocphuongnb/tetua@v0.0.7-alpha/packages/entrepository/utils.go (about)

     1  package entrepository
     2  
     3  import (
     4  	"github.com/ngocphuongnb/tetua/app/entities"
     5  	"github.com/ngocphuongnb/tetua/packages/entrepository/ent"
     6  )
     7  
     8  func entFileToFile(file *ent.File) *entities.File {
     9  	if file == nil {
    10  		return nil
    11  	}
    12  	f := &entities.File{
    13  		ID:        file.ID,
    14  		CreatedAt: &file.CreatedAt,
    15  		UpdatedAt: &file.UpdatedAt,
    16  		DeletedAt: &file.DeletedAt,
    17  		Disk:      file.Disk,
    18  		Path:      file.Path,
    19  		Type:      file.Type,
    20  		Size:      file.Size,
    21  		UserID:    file.UserID,
    22  	}
    23  
    24  	if file.Edges.Posts != nil {
    25  		f.Posts = entPostsToPosts(file.Edges.Posts)
    26  	}
    27  	if file.Edges.User != nil {
    28  		f.User = entUserToUser(file.Edges.User)
    29  	}
    30  
    31  	return f
    32  }
    33  
    34  func entFilesToFiles(files []*ent.File) []*entities.File {
    35  	var result []*entities.File
    36  
    37  	for _, file := range files {
    38  		result = append(result, entFileToFile(file))
    39  	}
    40  
    41  	return result
    42  }
    43  
    44  func entPermissionToPermission(permission *ent.Permission) *entities.Permission {
    45  	if permission == nil {
    46  		return nil
    47  	}
    48  	p := &entities.Permission{
    49  		ID:        permission.ID,
    50  		RoleID:    permission.RoleID,
    51  		Action:    permission.Action,
    52  		Value:     permission.Value,
    53  		CreatedAt: &permission.CreatedAt,
    54  		UpdatedAt: &permission.UpdatedAt,
    55  		DeletedAt: &permission.DeletedAt,
    56  	}
    57  
    58  	if permission.Edges.Role != nil {
    59  		p.Role = entRoleToRole(permission.Edges.Role)
    60  	}
    61  
    62  	return p
    63  }
    64  
    65  func entPermissionsToPermissions(permissions []*ent.Permission) []*entities.Permission {
    66  	var result []*entities.Permission
    67  
    68  	for _, permission := range permissions {
    69  		result = append(result, entPermissionToPermission(permission))
    70  	}
    71  
    72  	return result
    73  }
    74  
    75  func entPostToPost(post *ent.Post) *entities.Post {
    76  	if post == nil {
    77  		return nil
    78  	}
    79  	p := &entities.Post{
    80  		ID:              post.ID,
    81  		Name:            post.Name,
    82  		Description:     post.Description,
    83  		Slug:            post.Slug,
    84  		Content:         post.Content,
    85  		ContentHTML:     post.ContentHTML,
    86  		Draft:           post.Draft,
    87  		ViewCount:       post.ViewCount,
    88  		CommentCount:    post.CommentCount,
    89  		RatingCount:     post.RatingCount,
    90  		RatingTotal:     post.RatingTotal,
    91  		FeaturedImageID: post.FeaturedImageID,
    92  		CreatedAt:       &post.CreatedAt,
    93  		UpdatedAt:       &post.UpdatedAt,
    94  		DeletedAt:       &post.DeletedAt,
    95  		UserID:          post.UserID,
    96  		Approved:        post.Approved,
    97  		User:            &entities.User{},
    98  		FeaturedImage:   &entities.File{},
    99  		Topics:          entTopicsToTopics(post.Edges.Topics),
   100  	}
   101  
   102  	if post.Edges.FeaturedImage != nil {
   103  		p.FeaturedImage = entFileToFile(post.Edges.FeaturedImage)
   104  	}
   105  
   106  	if post.Edges.User != nil {
   107  		p.User = entUserToUser(post.Edges.User)
   108  	}
   109  
   110  	return p
   111  }
   112  
   113  func entPostsToPosts(posts []*ent.Post) []*entities.Post {
   114  	var result []*entities.Post
   115  
   116  	for _, post := range posts {
   117  		result = append(result, entPostToPost(post))
   118  	}
   119  
   120  	return result
   121  }
   122  
   123  func entPageToPage(post *ent.Page) *entities.Page {
   124  	if post == nil {
   125  		return nil
   126  	}
   127  	p := &entities.Page{
   128  		ID:              post.ID,
   129  		Name:            post.Name,
   130  		Slug:            post.Slug,
   131  		Content:         post.Content,
   132  		ContentHTML:     post.ContentHTML,
   133  		Draft:           post.Draft,
   134  		FeaturedImageID: post.FeaturedImageID,
   135  		CreatedAt:       &post.CreatedAt,
   136  		UpdatedAt:       &post.UpdatedAt,
   137  		DeletedAt:       &post.DeletedAt,
   138  		FeaturedImage:   &entities.File{},
   139  	}
   140  
   141  	if post.Edges.FeaturedImage != nil {
   142  		p.FeaturedImage = entFileToFile(post.Edges.FeaturedImage)
   143  	}
   144  
   145  	return p
   146  }
   147  
   148  func entPagesToPages(posts []*ent.Page) []*entities.Page {
   149  	var result []*entities.Page
   150  
   151  	for _, post := range posts {
   152  		result = append(result, entPageToPage(post))
   153  	}
   154  
   155  	return result
   156  }
   157  
   158  func entRoleToRole(role *ent.Role) *entities.Role {
   159  	if role == nil {
   160  		return nil
   161  	}
   162  	r := &entities.Role{
   163  		ID:          role.ID,
   164  		Name:        role.Name,
   165  		Description: role.Description,
   166  		Root:        role.Root,
   167  		CreatedAt:   &role.CreatedAt,
   168  		UpdatedAt:   &role.UpdatedAt,
   169  		DeletedAt:   &role.DeletedAt,
   170  	}
   171  
   172  	if role.Edges.Users != nil {
   173  		r.Users = entUsersToUsers(role.Edges.Users)
   174  	}
   175  	if role.Edges.Permissions != nil {
   176  		r.Permissions = entPermissionsToPermissions(role.Edges.Permissions)
   177  	}
   178  
   179  	return r
   180  }
   181  
   182  func entRolesToRoles(roles []*ent.Role) []*entities.Role {
   183  	var result []*entities.Role
   184  
   185  	for _, role := range roles {
   186  		result = append(result, entRoleToRole(role))
   187  	}
   188  
   189  	return result
   190  }
   191  
   192  func entTopicToTopic(topic *ent.Topic) *entities.Topic {
   193  	if topic == nil {
   194  		return nil
   195  	}
   196  	f := &entities.Topic{
   197  		ID:          topic.ID,
   198  		CreatedAt:   &topic.CreatedAt,
   199  		UpdatedAt:   &topic.UpdatedAt,
   200  		DeletedAt:   &topic.DeletedAt,
   201  		Name:        topic.Name,
   202  		Slug:        topic.Slug,
   203  		Description: topic.Description,
   204  		Content:     topic.Content,
   205  		ContentHTML: topic.ContentHTML,
   206  		ParentID:    topic.ParentID,
   207  	}
   208  
   209  	if topic.Edges.Parent != nil {
   210  		f.Parent = entTopicToTopic(topic.Edges.Parent)
   211  	}
   212  	if topic.Edges.Children != nil {
   213  		f.Children = entTopicsToTopics(topic.Edges.Children)
   214  	}
   215  
   216  	return f
   217  }
   218  
   219  func entTopicsToTopics(topics []*ent.Topic) []*entities.Topic {
   220  	var result []*entities.Topic
   221  
   222  	for _, topic := range topics {
   223  		result = append(result, entTopicToTopic(topic))
   224  	}
   225  
   226  	return result
   227  }
   228  
   229  func entUserToUser(user *ent.User) *entities.User {
   230  	if user == nil {
   231  		return nil
   232  	}
   233  	u := &entities.User{
   234  		ID:               user.ID,
   235  		Username:         user.Username,
   236  		Password:         user.Password,
   237  		DisplayName:      user.DisplayName,
   238  		URL:              user.URL,
   239  		Provider:         user.Provider,
   240  		ProviderID:       user.ProviderID,
   241  		ProviderUsername: user.ProviderUsername,
   242  		ProviderAvatar:   user.ProviderAvatar,
   243  		Email:            user.Email,
   244  		Bio:              user.Bio,
   245  		BioHTML:          user.BioHTML,
   246  		Roles:            []*entities.Role{},
   247  		Active:           user.Active,
   248  		AvatarImageID:    user.AvatarImageID,
   249  		CreatedAt:        &user.CreatedAt,
   250  		UpdatedAt:        &user.UpdatedAt,
   251  		DeletedAt:        &user.DeletedAt,
   252  	}
   253  
   254  	if user.Edges.Roles != nil {
   255  		u.Roles = entRolesToRoles(user.Edges.Roles)
   256  	}
   257  
   258  	if user.Edges.AvatarImage != nil {
   259  		u.AvatarImage = entFileToFile(user.Edges.AvatarImage)
   260  	}
   261  
   262  	return u
   263  }
   264  
   265  func entUsersToUsers(users []*ent.User) []*entities.User {
   266  	var result []*entities.User
   267  
   268  	for _, user := range users {
   269  		result = append(result, entUserToUser(user))
   270  	}
   271  
   272  	return result
   273  }
   274  
   275  func entCommentToComment(comment *ent.Comment) *entities.Comment {
   276  	if comment == nil {
   277  		return nil
   278  	}
   279  	f := &entities.Comment{
   280  		ID:          comment.ID,
   281  		CreatedAt:   &comment.CreatedAt,
   282  		UpdatedAt:   &comment.UpdatedAt,
   283  		DeletedAt:   &comment.DeletedAt,
   284  		UserID:      comment.UserID,
   285  		ParentID:    comment.ParentID,
   286  		Content:     comment.Content,
   287  		ContentHTML: comment.ContentHTML,
   288  	}
   289  
   290  	if comment.Edges.Post != nil {
   291  		f.Post = entPostToPost(comment.Edges.Post)
   292  	}
   293  
   294  	if comment.Edges.Parent != nil {
   295  		f.Parent = entCommentToComment(comment.Edges.Parent)
   296  	}
   297  
   298  	if comment.Edges.User != nil {
   299  		f.User = entUserToUser(comment.Edges.User)
   300  	}
   301  
   302  	return f
   303  }
   304  
   305  func entCommentsToComments(comments []*ent.Comment) []*entities.Comment {
   306  	var result []*entities.Comment
   307  
   308  	for _, comment := range comments {
   309  		result = append(result, entCommentToComment(comment))
   310  	}
   311  
   312  	return result
   313  }
   314  
   315  // func entSettingToSetting(setting *ent.Setting) *entities.Setting {
   316  // 	if setting == nil {
   317  // 		return nil
   318  // 	}
   319  // 	f := &entities.Setting{
   320  // 		ID:        setting.ID,
   321  // 		Name:      setting.Name,
   322  // 		Value:     setting.Value,
   323  // 		CreatedAt: &setting.CreatedAt,
   324  // 		UpdatedAt: &setting.UpdatedAt,
   325  // 		DeletedAt: &setting.DeletedAt,
   326  // 	}
   327  
   328  // 	return f
   329  // }
   330  
   331  // func entSettingsToSettings(settings []*ent.Setting) []*entities.Setting {
   332  // 	var result []*entities.Setting
   333  
   334  // 	for _, setting := range settings {
   335  // 		result = append(result, entSettingToSetting(setting))
   336  // 	}
   337  
   338  // 	return result
   339  // }
   340  
   341  func getSortFNs(sorts []*entities.Sort) []ent.OrderFunc {
   342  	var result []ent.OrderFunc
   343  
   344  	for _, sort := range sorts {
   345  		direction := ent.Desc
   346  
   347  		if sort.Order == "ASC" {
   348  			direction = ent.Asc
   349  		}
   350  
   351  		result = append(result, direction(sort.Field))
   352  	}
   353  
   354  	return result
   355  }