add UserRendererService and improve errors
This commit is contained in:
		
							parent
							
								
									6114f384a0
								
							
						
					
					
						commit
						f674d059fd
					
				
					 14 changed files with 607 additions and 25 deletions
				
			
		
							
								
								
									
										18
									
								
								Foxnouns.Backend/Services/MemberRendererService.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Foxnouns.Backend/Services/MemberRendererService.cs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| using Foxnouns.Backend.Database; | ||||
| using Foxnouns.Backend.Database.Models; | ||||
| 
 | ||||
| namespace Foxnouns.Backend.Services; | ||||
| 
 | ||||
| public class MemberRendererService(DatabaseContext db) | ||||
| { | ||||
|     public PartialMember RenderPartialMember(Member member) => new(member.Id, member.Name, | ||||
|         member.DisplayName, member.Bio, member.Names, member.Pronouns); | ||||
| 
 | ||||
|     public record PartialMember( | ||||
|         Snowflake Id, | ||||
|         string Name, | ||||
|         string? DisplayName, | ||||
|         string? Bio, | ||||
|         IEnumerable<FieldEntry> Names, | ||||
|         IEnumerable<Pronoun> Pronouns); | ||||
| } | ||||
							
								
								
									
										36
									
								
								Foxnouns.Backend/Services/UserRendererService.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Foxnouns.Backend/Services/UserRendererService.cs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| using Foxnouns.Backend.Database; | ||||
| using Foxnouns.Backend.Database.Models; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Newtonsoft.Json; | ||||
| 
 | ||||
| namespace Foxnouns.Backend.Services; | ||||
| 
 | ||||
| public class UserRendererService(DatabaseContext db, MemberRendererService memberRendererService) | ||||
| { | ||||
|     public async Task<object> RenderUserAsync(User user, User? selfUser = null, bool renderMembers = true) | ||||
|     { | ||||
|         renderMembers = renderMembers && (!user.ListHidden || selfUser?.Id == user.Id); | ||||
| 
 | ||||
|         var members = renderMembers ? await db.Members.Where(m => m.UserId == user.Id).ToListAsync() : []; | ||||
| 
 | ||||
|         return new UserResponse( | ||||
|             user.Id, user.Username, user.DisplayName, user.Bio, user.MemberTitle, user.Avatar, user.Links, user.Names, | ||||
|             user.Pronouns, user.Fields, | ||||
|             renderMembers ? members.Select(memberRendererService.RenderPartialMember) : null); | ||||
|     } | ||||
| 
 | ||||
|     public record UserResponse( | ||||
|         Snowflake Id, | ||||
|         string Username, | ||||
|         string? DisplayName, | ||||
|         string? Bio, | ||||
|         string? MemberTitle, | ||||
|         string? AvatarUrl, | ||||
|         string[] Links, | ||||
|         IEnumerable<FieldEntry> Names, | ||||
|         IEnumerable<Pronoun> Pronouns, | ||||
|         IEnumerable<Field> Fields, | ||||
|         [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] | ||||
|         IEnumerable<MemberRendererService.PartialMember>? Members | ||||
|     ); | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue