From db11178ccde04fa567ac44e34e3296fd0871541d Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 17 Mar 2020 13:25:37 +0100 Subject: [PATCH 1/6] Add db table for invite links Co-authored-by: [Mahgs] Co-authored-by: Christoph --- src/main/resources/schema.sql | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index 9a3fe1f..27cc591 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -10,3 +10,11 @@ CREATE TABLE event event_payload VARCHAR(255), visibility BOOLEAN ); + +DROP TABLE IF EXISTS invite; + +CREATE TABLE invite +( + group_id INT FOREIGN KEY REFERENCES event(group_id), + invite_link varchar(255) +) From e045dc54eef8c85756e1f7f6a20a83fa071d48d0 Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 17 Mar 2020 13:33:02 +0100 Subject: [PATCH 2/6] Add InviteLinkDTO + add dto folder Co-authored-by: [Mahgs] Co-authored-by: Christoph --- .../gruppen2/controller/Gruppen2Controller.java | 13 +++++-------- .../mops/gruppen2/domain/{ => dto}/EventDTO.java | 2 +- .../mops/gruppen2/domain/dto/InviteLinkDTO.java | 13 +++++++++++++ .../mops/gruppen2/repository/EventRepository.java | 2 +- .../mops/gruppen2/service/ControllerService.java | 9 ++++++--- .../java/mops/gruppen2/service/EventService.java | 2 +- .../java/mops/gruppen2/service/GroupService.java | 2 +- .../mops/gruppen2/service/SerializationService.java | 1 - .../mops/gruppen2/service/EventServiceTest.java | 6 +++--- 9 files changed, 31 insertions(+), 19 deletions(-) rename src/main/java/mops/gruppen2/domain/{ => dto}/EventDTO.java (89%) create mode 100644 src/main/java/mops/gruppen2/domain/dto/InviteLinkDTO.java diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 6999a81..11f8209 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -3,7 +3,6 @@ package mops.gruppen2.controller; import mops.gruppen2.config.Gruppen2Config; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; - import mops.gruppen2.domain.User; import mops.gruppen2.security.Account; import mops.gruppen2.service.*; @@ -12,8 +11,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.client.RestTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.server.ResponseStatusException; import javax.annotation.security.RolesAllowed; @@ -86,11 +87,7 @@ public class Gruppen2Controller { @RequestParam(value = "visibility", required = false) Boolean visibility) { Account account = keyCloakService.createAccountFromPrincipal(token); - if (visibility == null) { - visibility = true; - }else{ - visibility = false; - } + visibility = visibility == null; controllerService.createGroup(account, title, beschreibung, visibility); return "redirect:/gruppen2/"; diff --git a/src/main/java/mops/gruppen2/domain/EventDTO.java b/src/main/java/mops/gruppen2/domain/dto/EventDTO.java similarity index 89% rename from src/main/java/mops/gruppen2/domain/EventDTO.java rename to src/main/java/mops/gruppen2/domain/dto/EventDTO.java index 764a454..e3f5462 100644 --- a/src/main/java/mops/gruppen2/domain/EventDTO.java +++ b/src/main/java/mops/gruppen2/domain/dto/EventDTO.java @@ -1,4 +1,4 @@ -package mops.gruppen2.domain; +package mops.gruppen2.domain.dto; import lombok.Data; import org.springframework.data.annotation.Id; diff --git a/src/main/java/mops/gruppen2/domain/dto/InviteLinkDTO.java b/src/main/java/mops/gruppen2/domain/dto/InviteLinkDTO.java new file mode 100644 index 0000000..14beb7d --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/dto/InviteLinkDTO.java @@ -0,0 +1,13 @@ +package mops.gruppen2.domain.dto; + +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.relational.core.mapping.Table; + +@Table("invite") +@Data +public class InviteLinkDTO { + @Id + private Long group_id; + private String invite_link; +} diff --git a/src/main/java/mops/gruppen2/repository/EventRepository.java b/src/main/java/mops/gruppen2/repository/EventRepository.java index 4bbd2d7..1cdfd01 100644 --- a/src/main/java/mops/gruppen2/repository/EventRepository.java +++ b/src/main/java/mops/gruppen2/repository/EventRepository.java @@ -1,6 +1,6 @@ package mops.gruppen2.repository; -import mops.gruppen2.domain.EventDTO; +import mops.gruppen2.domain.dto.EventDTO; import org.springframework.data.jdbc.repository.query.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 56173c1..2bd70c3 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -7,7 +7,10 @@ import mops.gruppen2.domain.Visibility; import mops.gruppen2.domain.event.*; import mops.gruppen2.security.Account; import org.springframework.stereotype.Service; -import java.util.*; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; @Service public class ControllerService { @@ -29,9 +32,9 @@ public class ControllerService { */ public void createGroup(Account account, String title, String description, Boolean visibility) { Visibility visibility1; - if (visibility){ + if (visibility) { visibility1 = Visibility.PUBLIC; - }else{ + } else { visibility1 = Visibility.PRIVATE; } List eventList = new ArrayList<>(); diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java index d6fb3da..f545456 100644 --- a/src/main/java/mops/gruppen2/service/EventService.java +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -1,8 +1,8 @@ package mops.gruppen2.service; import com.fasterxml.jackson.core.JsonProcessingException; -import mops.gruppen2.domain.EventDTO; import mops.gruppen2.domain.Visibility; +import mops.gruppen2.domain.dto.EventDTO; import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 2faf17e..2b0ef3c 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -1,8 +1,8 @@ package mops.gruppen2.service; -import mops.gruppen2.domain.EventDTO; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.dto.EventDTO; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.springframework.stereotype.Service; diff --git a/src/main/java/mops/gruppen2/service/SerializationService.java b/src/main/java/mops/gruppen2/service/SerializationService.java index 86b00ed..3c7f8ba 100644 --- a/src/main/java/mops/gruppen2/service/SerializationService.java +++ b/src/main/java/mops/gruppen2/service/SerializationService.java @@ -2,7 +2,6 @@ package mops.gruppen2.service; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import mops.gruppen2.domain.EventDTO; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.slf4j.Logger; diff --git a/src/test/java/mops/gruppen2/service/EventServiceTest.java b/src/test/java/mops/gruppen2/service/EventServiceTest.java index 4991baf..122e219 100644 --- a/src/test/java/mops/gruppen2/service/EventServiceTest.java +++ b/src/test/java/mops/gruppen2/service/EventServiceTest.java @@ -1,8 +1,8 @@ package mops.gruppen2.service; -import mops.gruppen2.domain.EventDTO; import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.Visibility; +import mops.gruppen2.domain.dto.EventDTO; import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.repository.EventRepository; @@ -14,7 +14,7 @@ import org.mockito.junit.MockitoJUnitRunner; import java.util.ArrayList; import java.util.List; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -86,4 +86,4 @@ class EventServiceTest { assertEquals(eventDTO.isVisibility(), false); } -} \ No newline at end of file +} From 906585ce9aeaa4176da28557f2533cef9b5a81f6 Mon Sep 17 00:00:00 2001 From: "[Mahgs]" Date: Tue, 17 Mar 2020 13:42:35 +0100 Subject: [PATCH 3/6] added InviteLinkRepository Co-authored-by: Christoph --- .../gruppen2/repository/InviteLinkRepository.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/mops/gruppen2/repository/InviteLinkRepository.java diff --git a/src/main/java/mops/gruppen2/repository/InviteLinkRepository.java b/src/main/java/mops/gruppen2/repository/InviteLinkRepository.java new file mode 100644 index 0000000..ee70999 --- /dev/null +++ b/src/main/java/mops/gruppen2/repository/InviteLinkRepository.java @@ -0,0 +1,13 @@ +package mops.gruppen2.repository; + +import mops.gruppen2.domain.dto.InviteLinkDTO; +import org.springframework.data.jdbc.repository.query.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +@Repository +public interface InviteLinkRepository extends CrudRepository { + @Query("select invite_link from inviteLink where group_id =:id") + String findLinkByGroupID(@Param("id") Long GroupID); +} From 6e067d1b4740028ce6481ddb72215847fb20f1a4 Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 17 Mar 2020 16:16:58 +0100 Subject: [PATCH 4/6] Fix InviteLink DB Schema + Implement Frontend InviteLink Handling Co-authored-by: [Mahgs] Co-authored-by: Christoph --- .../controller/Gruppen2Controller.java | 36 ++++++++++++------- .../gruppen2/domain/dto/InviteLinkDTO.java | 7 ++-- .../gruppen2/repository/EventRepository.java | 2 +- .../repository/InviteLinkRepository.java | 10 ++++-- .../gruppen2/service/ControllerService.java | 27 +++++++++----- src/main/resources/application-dev.properties | 10 +++--- src/main/resources/schema.sql | 7 ++-- 7 files changed, 62 insertions(+), 37 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 11f8209..6eb18d4 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -11,10 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import org.springframework.web.server.ResponseStatusException; import javax.annotation.security.RolesAllowed; @@ -33,13 +30,15 @@ public class Gruppen2Controller { private final GroupService groupService; private final UserService userService; private final ControllerService controllerService; + private final InviteLinkRepositoryService inviteLinkRepositoryService; - public Gruppen2Controller(KeyCloakService keyCloakService, EventService eventService, GroupService groupService, UserService userService, ControllerService controllerService) { + public Gruppen2Controller(KeyCloakService keyCloakService, EventService eventService, GroupService groupService, UserService userService, ControllerService controllerService, InviteLinkRepositoryService inviteLinkRepositoryService) { this.keyCloakService = keyCloakService; this.eventService = eventService; this.groupService = groupService; this.userService = userService; this.controllerService = controllerService; + this.inviteLinkRepositoryService = inviteLinkRepositoryService; } /** @@ -57,7 +56,7 @@ public class Gruppen2Controller { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); model.addAttribute("gruppen", userService.getUserGroups(user.getUser_id())); - model.addAttribute("user",user); + model.addAttribute("user", user); return "index"; } @@ -72,11 +71,11 @@ public class Gruppen2Controller { @GetMapping("/findGroup") public String findGroup(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "suchbegriff", required = false) String suchbegriff) throws EventException { List groupse = new ArrayList<>(); - if(suchbegriff!=null) { + if (suchbegriff != null) { groupse = groupService.findGroupWith(suchbegriff); } model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); - model.addAttribute("gruppen",groupse); + model.addAttribute("gruppen", groupse); return "search"; } @@ -95,12 +94,12 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @GetMapping("/details") - public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam (value="id") Long id) throws EventException, ResponseStatusException { + public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws EventException, ResponseStatusException { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); Group group = userService.getGroupById(id); - Account account = keyCloakService.createAccountFromPrincipal (token); + Account account = keyCloakService.createAccountFromPrincipal(token); User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); - if(group!= null) { + if (group != null) { model.addAttribute("group", group); model.addAttribute("role", group.getRoles().get(user.getUser_id())); return "detailsMember"; @@ -110,14 +109,25 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @GetMapping("/detailsSearch") - public String showGroupDetailsNoMember (KeycloakAuthenticationToken token, Model model, @RequestParam (value="id") Long id) throws EventException { + public String showGroupDetailsNoMember(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws EventException { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); Group group = userService.getGroupById(id); - if (group!=null) { + if (group != null) { model.addAttribute("group", group); return "detailsNoMember"; } throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); } + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @GetMapping("/acceptinvite/{link}") + public String acceptInvite(KeycloakAuthenticationToken token, Model model, @PathVariable String link) throws EventException { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + Group group = userService.getGroupById(inviteLinkRepositoryService.findGroupIdByInvite(link)); + if (group != null) { + model.addAttribute("group", group); + return "redirect:/gruppen2/detailsSearch?id=" + group.getId(); + } + throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); + } } diff --git a/src/main/java/mops/gruppen2/domain/dto/InviteLinkDTO.java b/src/main/java/mops/gruppen2/domain/dto/InviteLinkDTO.java index 14beb7d..cac347a 100644 --- a/src/main/java/mops/gruppen2/domain/dto/InviteLinkDTO.java +++ b/src/main/java/mops/gruppen2/domain/dto/InviteLinkDTO.java @@ -1,13 +1,16 @@ package mops.gruppen2.domain.dto; +import lombok.AllArgsConstructor; import lombok.Data; import org.springframework.data.annotation.Id; import org.springframework.data.relational.core.mapping.Table; @Table("invite") @Data +@AllArgsConstructor public class InviteLinkDTO { @Id - private Long group_id; - private String invite_link; + Long link_id; + Long group_id; + String invite_link; } diff --git a/src/main/java/mops/gruppen2/repository/EventRepository.java b/src/main/java/mops/gruppen2/repository/EventRepository.java index 1cdfd01..5eb0139 100644 --- a/src/main/java/mops/gruppen2/repository/EventRepository.java +++ b/src/main/java/mops/gruppen2/repository/EventRepository.java @@ -19,7 +19,7 @@ public interface EventRepository extends CrudRepository { //@Query("SELECT * FROM event WHERE event_id > ?#{[0]}") //Iterable findNewEventSinceStatus(@Param("status") Long status); - @Query("select * from event where visibility =:vis") + @Query("select * from event where visibility =:vis") List findEventDTOByVisibility(@Param("vis") Boolean visibility); @Query("SELECT DISTINCT group_id FROM event WHERE event_id > :status") diff --git a/src/main/java/mops/gruppen2/repository/InviteLinkRepository.java b/src/main/java/mops/gruppen2/repository/InviteLinkRepository.java index ee70999..4cd5932 100644 --- a/src/main/java/mops/gruppen2/repository/InviteLinkRepository.java +++ b/src/main/java/mops/gruppen2/repository/InviteLinkRepository.java @@ -7,7 +7,11 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository -public interface InviteLinkRepository extends CrudRepository { - @Query("select invite_link from inviteLink where group_id =:id") - String findLinkByGroupID(@Param("id") Long GroupID); +public interface InviteLinkRepository extends CrudRepository { + + //@Query("SELECT invite_link FROM invite WHERE group_id = :id") + //String findLinkByGroupID(@Param("id") Long GroupID); + + @Query("SELECT group_id FROM invite WHERE invite_link = :link") + Long findGroupIdByLink(@Param("link") String link); } diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 2bd70c3..e6dd3ef 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -11,14 +11,17 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.UUID; @Service public class ControllerService { private final EventService eventService; + private final InviteLinkRepositoryService inviteLinkRepositoryService; - public ControllerService(EventService eventService) { + public ControllerService(EventService eventService, InviteLinkRepositoryService inviteLinkRepositoryService) { this.eventService = eventService; + this.inviteLinkRepositoryService = inviteLinkRepositoryService; } /** @@ -31,25 +34,31 @@ public class ControllerService { * @param description Gruppenbeschreibung */ public void createGroup(Account account, String title, String description, Boolean visibility) { + Long groupID = eventService.checkGroup(); Visibility visibility1; if (visibility) { visibility1 = Visibility.PUBLIC; } else { visibility1 = Visibility.PRIVATE; + createInviteLink(groupID); } List eventList = new ArrayList<>(); - Collections.addAll(eventList, new CreateGroupEvent(eventService.checkGroup(), account.getName(), null , GroupType.LECTURE, visibility1), - new AddUserEvent(eventService.checkGroup(), account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()), - new UpdateRoleEvent(eventService.checkGroup(), account.getName(), Role.ADMIN), - new UpdateGroupTitleEvent(eventService.checkGroup(), account.getName(), title), - new UpdateGroupDescriptionEvent(eventService.checkGroup(), account.getName(), description), - new UpdateRoleEvent(eventService.checkGroup(),account.getName(), Role.ADMIN)); + Collections.addAll(eventList, new CreateGroupEvent(groupID, account.getName(), null, GroupType.LECTURE, visibility1), + new AddUserEvent(groupID, account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()), + new UpdateRoleEvent(groupID, account.getName(), Role.ADMIN), + new UpdateGroupTitleEvent(groupID, account.getName(), title), + new UpdateGroupDescriptionEvent(groupID, account.getName(), description), + new UpdateRoleEvent(groupID, account.getName(), Role.ADMIN)); eventService.saveEventList(eventList); } - public void addUser(Account account, Group group){ - AddUserEvent addUserEvent = new AddUserEvent(eventService.checkGroup(),group.getId(),account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()); + private void createInviteLink(Long group_id) { + inviteLinkRepositoryService.saveInvite(group_id, UUID.randomUUID()); + } + + public void addUser(Account account, Group group) { + AddUserEvent addUserEvent = new AddUserEvent(eventService.checkGroup(), group.getId(), account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); eventService.saveEvent(addUserEvent); } } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 79a9404..ee53a97 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -1,23 +1,21 @@ server.port=8080 application.name=gruppen2 - logging.pattern.console=[${application.name}],%magenta(%-5level), %d{dd-MM-yyyy HH:mm:ss.SSS}, %highlight(%msg),%thread,%logger.%M%n - spring.datasource.url=jdbc:h2:mem:blogdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect - +spring.h2.console.enabled=true +logging.level.org.springframework.jdbc.core=DEBUG keycloak.principal-attribute=preferred_username keycloak.auth-server-url=https://keycloak.cs.hhu.de/auth keycloak.realm=MOPS - hhu_keycloak.token-uri=https://keycloak.cs.hhu.de/auth/realms/MOPS/protocol/openid-connect/token keycloak.resource=gruppenfindung -keycloak.credentials.secret= fc6ebf10-8c63-4e71-a667-4eae4e8209a1 +keycloak.credentials.secret=fc6ebf10-8c63-4e71-a667-4eae4e8209a1 keycloak.verify-token-audience=true keycloak.use-resource-role-mappings=true keycloak.autodetect-bearer-only=true -keycloak.confidential-port= 443 \ No newline at end of file +keycloak.confidential-port= 443 diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index 27cc591..5ad3f09 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -15,6 +15,7 @@ DROP TABLE IF EXISTS invite; CREATE TABLE invite ( - group_id INT FOREIGN KEY REFERENCES event(group_id), - invite_link varchar(255) -) + link_id INT PRIMARY KEY AUTO_INCREMENT, + group_id INT NOT NULL, + invite_link varchar(255) NOT NULL +); From aa67bd2e8858b31b238b3adaf7a8eaef7457b3fa Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 17 Mar 2020 16:55:32 +0100 Subject: [PATCH 5/6] Add missing service Co-authored-by: [Mahgs] Co-authored-by: Christoph --- .../service/InviteLinkRepositoryService.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/java/mops/gruppen2/service/InviteLinkRepositoryService.java diff --git a/src/main/java/mops/gruppen2/service/InviteLinkRepositoryService.java b/src/main/java/mops/gruppen2/service/InviteLinkRepositoryService.java new file mode 100644 index 0000000..4bc082d --- /dev/null +++ b/src/main/java/mops/gruppen2/service/InviteLinkRepositoryService.java @@ -0,0 +1,26 @@ +package mops.gruppen2.service; + +import mops.gruppen2.domain.dto.InviteLinkDTO; +import mops.gruppen2.repository.InviteLinkRepository; +import org.springframework.stereotype.Service; + +import java.util.UUID; + +@Service +public class InviteLinkRepositoryService { + + private final InviteLinkRepository inviteLinkRepository; + + public InviteLinkRepositoryService(InviteLinkRepository inviteLinkRepository) { + this.inviteLinkRepository = inviteLinkRepository; + } + + public long findGroupIdByInvite(String link) { + return inviteLinkRepository.findGroupIdByLink(link); + } + + public void saveInvite(Long group_id, UUID link) { + inviteLinkRepository.save(new InviteLinkDTO(null, group_id, link.toString())); + } + +} From b431361eec0751f4f70c53ff709262c87d0fe43b Mon Sep 17 00:00:00 2001 From: "[Mahgs]" Date: Wed, 18 Mar 2020 13:19:19 +0100 Subject: [PATCH 6/6] merged with master --- src/main/java/mops/gruppen2/service/GroupService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index a4b034b..e6adcb3 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -1,6 +1,6 @@ package mops.gruppen2.service; -import mops.gruppen2.domain.EventDTO; +import mops.gruppen2.domain.dto.EventDTO; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Visibility;