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 }