-
Notifications
You must be signed in to change notification settings - Fork 0
Folder structure changes for shared files in Sign up and User Profile #55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
6c64283
53dfca5
7d82389
681e5c6
e224153
a9d9de8
0093fba
416f541
3854c2f
5adcade
9b98919
c4dcd8b
452abea
81c3966
bd7a82e
0bb6c11
1eb7968
5e2af16
6276b0c
554d7b1
2052904
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| import { Stack, Title } from "@mantine/core"; | ||
|
|
||
| export function UserProfilePage() { | ||
| return ( | ||
| <Stack gap="xl"> | ||
| <Title order={2}>User Profile</Title> | ||
| </Stack> | ||
| ); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| package org.patinanetwork.patchats.api.member; | ||
|
|
||
| import io.swagger.v3.oas.annotations.tags.Tag; | ||
| import jakarta.validation.Valid; | ||
| import lombok.RequiredArgsConstructor; | ||
| import org.patinanetwork.patchats.api.member.dto.CreateMemberRequest; | ||
| import org.patinanetwork.patchats.api.member.dto.MemberDto; | ||
| import org.patinanetwork.patchats.common.dto.ApiResponder; | ||
| import org.springframework.http.ResponseEntity; | ||
| import org.springframework.web.bind.annotation.PostMapping; | ||
| import org.springframework.web.bind.annotation.RequestBody; | ||
| import org.springframework.web.bind.annotation.RequestMapping; | ||
| import org.springframework.web.bind.annotation.RestController; | ||
|
|
||
| @RestController | ||
| @RequestMapping("/api/members") | ||
| @Tag(name = "Member") | ||
| @RequiredArgsConstructor | ||
| public class MemberController { | ||
|
|
||
| private final MemberService memberService; | ||
|
|
||
| @PostMapping | ||
| public ResponseEntity<ApiResponder<MemberDto>> createMember(@Valid @RequestBody final CreateMemberRequest request) { | ||
| final MemberDto response = memberService.createMember(request); | ||
| return ResponseEntity.ok(ApiResponder.success("Member created successfully", response)); | ||
| } | ||
|
|
||
| // TODO: Implement these endpoints after createMember is fully functional and tested | ||
|
Check warning on line 29 in src/main/java/org/patinanetwork/patchats/api/member/MemberController.java
|
||
| // @PatchMapping("/{id}") | ||
| // public ResponseEntity<ApiResponder<MemberDto>> updateMember( | ||
| // @Valid @RequestBody final UpdateMemberRequest request, @PathVariable final UUID id) { | ||
|
Check warning on line 32 in src/main/java/org/patinanetwork/patchats/api/member/MemberController.java
|
||
| // final MemberDto response = memberService.updateMember(request, id); | ||
| // return ResponseEntity.ok(ApiResponder.success("Member updated successfully", response)); | ||
| // } | ||
|
|
||
| // @GetMapping("/{id}") | ||
| // public ResponseEntity<ApiResponder<MemberDto>> getMember(@PathVariable final UUID id) { | ||
|
Check warning on line 38 in src/main/java/org/patinanetwork/patchats/api/member/MemberController.java
|
||
| // final MemberDto response = memberService.getMemberById(id); | ||
| // return ResponseEntity.ok(ApiResponder.success("Member retrieved successfully", response)); | ||
| // } | ||
|
|
||
| // @DeleteMapping("/{id}") | ||
| // public ResponseEntity<ApiResponder<MemberDto>> deactivateMember(@PathVariable final UUID id) { | ||
|
Check warning on line 44 in src/main/java/org/patinanetwork/patchats/api/member/MemberController.java
|
||
| // final MemberDto response = memberService.deactivateMemberById(id); | ||
| // return ResponseEntity.ok(ApiResponder.success("Member deactivated successfully", response)); | ||
| // } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| package org.patinanetwork.patchats.api.member; | ||
|
|
||
| import java.util.UUID; | ||
| import lombok.RequiredArgsConstructor; | ||
| import org.patinanetwork.patchats.api.member.db.models.Member; | ||
| import org.patinanetwork.patchats.api.member.db.repos.MemberRepo; | ||
| import org.patinanetwork.patchats.api.member.dto.CreateMemberRequest; | ||
| import org.patinanetwork.patchats.api.member.dto.MemberDto; | ||
| import org.patinanetwork.patchats.api.member.dto.UpdateMemberRequest; | ||
| import org.patinanetwork.patchats.common.web.exception.MemberDuplicateException; | ||
| import org.patinanetwork.patchats.common.web.exception.MemberNotFoundException; | ||
| import org.springframework.http.HttpStatus; | ||
| import org.springframework.stereotype.Service; | ||
| import org.springframework.web.server.ResponseStatusException; | ||
|
|
||
| @Service | ||
| @RequiredArgsConstructor | ||
| public class MemberService { | ||
|
|
||
| private final MemberRepo memberRepo; | ||
|
|
||
| public MemberDto createMember(CreateMemberRequest request) { | ||
| if (memberRepo.getMemberByEmail(request.email()).isPresent()) { | ||
| throw new MemberDuplicateException(request.email()); | ||
| } | ||
| Member member = Member.builder() | ||
| .id(UUID.randomUUID()) | ||
| .fullName(request.fullName()) | ||
| .email(request.email()) | ||
| .linkedInUrl(request.linkedInUrl()) | ||
| .introduction(request.introduction()) | ||
| .referralSource(request.referralSource()) | ||
| .active(true) | ||
| .matchPref(request.matchPref()) | ||
| .industryPref(request.industryPref()) | ||
| .rolePref(request.rolePref()) | ||
| .topics(request.topics()) | ||
| .extraNotes(request.extraNotes()) | ||
| .build(); | ||
| Member createdMember = memberRepo.createMember(member); | ||
| return MemberDto.from(createdMember); | ||
| } | ||
|
|
||
| public MemberDto updateMember(UpdateMemberRequest request, UUID id) { | ||
| if (memberRepo.getMemberById(id).isEmpty()) { | ||
| throw new MemberNotFoundException(id); | ||
| } | ||
| // TODO: Implement partial update instead of full update | ||
|
Check warning on line 48 in src/main/java/org/patinanetwork/patchats/api/member/MemberService.java
|
||
| Member member = Member.builder() | ||
| .id(id) | ||
| .fullName(request.fullName()) | ||
| .email(request.email()) | ||
| .linkedInUrl(request.linkedInUrl()) | ||
| .introduction(request.introduction()) | ||
| .matchPref(request.matchPref()) | ||
| .industryPref(request.industryPref()) | ||
| .rolePref(request.rolePref()) | ||
| .topics(request.topics()) | ||
| .extraNotes(request.extraNotes()) | ||
| .build(); | ||
| Member updatedMember = memberRepo | ||
| .updateMember(member) | ||
| .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Member not found")); | ||
| return MemberDto.from(updatedMember); | ||
| } | ||
|
|
||
| // TODO: Implement these methods after createMember and updateMember is fully functional and tested | ||
|
Check warning on line 67 in src/main/java/org/patinanetwork/patchats/api/member/MemberService.java
|
||
| // public MemberDto getMemberById(UUID id) { | ||
|
Check warning on line 68 in src/main/java/org/patinanetwork/patchats/api/member/MemberService.java
|
||
| // return memberRepo | ||
| // .getMemberById(id) | ||
| // .map(MemberDto::from) | ||
| // .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Member not found")); | ||
| // } | ||
|
|
||
| // public MemberDto deactivateMemberById(UUID id) { | ||
|
Check warning on line 75 in src/main/java/org/patinanetwork/patchats/api/member/MemberService.java
|
||
| // return memberRepo | ||
| // .deactivateMemberById(id) | ||
| // .map(MemberDto::from) | ||
| // .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Member not found")); | ||
| // } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| package org.patinanetwork.patchats.api.member.db.models; | ||
|
|
||
| import java.time.Instant; | ||
| import java.util.UUID; | ||
| import lombok.Builder; | ||
| import lombok.EqualsAndHashCode; | ||
| import lombok.Getter; | ||
| import lombok.Setter; | ||
| import lombok.ToString; | ||
|
|
||
| @Getter | ||
| @Builder | ||
| @ToString | ||
| @EqualsAndHashCode | ||
| public class Member { | ||
|
|
||
| private UUID id; | ||
|
|
||
| @Setter | ||
| private String fullName; | ||
|
|
||
| @Setter | ||
| private String email; | ||
|
|
||
| @Setter | ||
| private String linkedInUrl; | ||
|
|
||
| @Setter | ||
| private String introduction; | ||
|
|
||
| @Setter | ||
| private String referralSource; | ||
|
|
||
| @Setter | ||
| private boolean active; | ||
|
|
||
| @Setter | ||
| private String matchPref; | ||
|
|
||
| @Setter | ||
| private String industryPref; | ||
|
|
||
| @Setter | ||
| private String rolePref; | ||
|
|
||
| @Setter | ||
| private String topics; | ||
|
|
||
| @Setter | ||
| private String extraNotes; | ||
|
|
||
| private Instant createdAt; | ||
|
|
||
| private Instant updatedAt; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| package org.patinanetwork.patchats.api.member.db.repos; | ||
|
|
||
| import java.util.Optional; | ||
| import java.util.UUID; | ||
| import org.patinanetwork.patchats.api.member.db.models.Member; | ||
|
|
||
| public interface MemberRepo { | ||
| /** | ||
| * @note - The provided object's methods will be overridden with any returned data from the database. | ||
| * @param member - required fields: | ||
| * <ul> | ||
| * <li>id | ||
| * <li>fullName | ||
| * <li>email | ||
| * <li>introduction | ||
| * <li>active | ||
| * <li>createdAt | ||
| * <li>updatedAt | ||
| * </ul> | ||
| */ | ||
| Member createMember(Member member); | ||
|
|
||
| /** | ||
| * @note - The provided object's methods will be overridden with any returned data from the database. | ||
| * @param member - overridden fields: | ||
| * <ul> | ||
| * <li>fullName | ||
| * <li>email | ||
| * <li>linkedInUrl | ||
| * <li>introduction | ||
| * <li>referralSource | ||
| * <li>active | ||
| * <li>matchPref | ||
| * <li>industryPref | ||
| * <li>rolePref | ||
| * <li>topics | ||
| * <li>extraNotes | ||
| * </ul> | ||
| */ | ||
| Optional<Member> updateMember(Member member); | ||
|
|
||
| Optional<Member> getMemberById(UUID id); | ||
|
|
||
| Optional<Member> getMemberByEmail(String email); | ||
|
|
||
| Optional<Member> deactivateMemberById(UUID id); | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.