From 025197525cd5b8fdc9afa7d8c0e6b2f2898e2082 Mon Sep 17 00:00:00 2001 From: Florian THIERRY Date: Tue, 28 Nov 2023 10:58:22 +0100 Subject: [PATCH] Add all layers. --- docker-compose.yml | 13 ++++++++ pom.xml | 20 +++++++++++++ sportshub-application/pom.xml | 29 ++++++++++++++++++ .../application/user/UserUseCases.java | 21 +++++++++++++ sportshub-domain/pom.xml | 30 +++++++++++++++++++ .../org/sportshub/domain/user/model/User.java | 8 +++++ .../sportshub/domain/user/port/UserPort.java | 10 +++++++ .../exposition/user/UserController.java | 23 ++++++++++++++ sportshub-infrastructure/pom.xml | 29 ++++++++++++++++++ .../user/adapter/UserInMemoryAdapter.java | 25 ++++++++++++++++ sportshub-launcher/pom.xml | 12 ++++++++ .../launcher/ApplicationLauncher.java | 7 ++++- 12 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 docker-compose.yml create mode 100644 sportshub-application/pom.xml create mode 100644 sportshub-application/src/main/java/org/sportshub/application/user/UserUseCases.java create mode 100644 sportshub-domain/pom.xml create mode 100644 sportshub-domain/src/main/java/org/sportshub/domain/user/model/User.java create mode 100644 sportshub-domain/src/main/java/org/sportshub/domain/user/port/UserPort.java create mode 100644 sportshub-exposition/src/main/java/org/sportshub/exposition/user/UserController.java create mode 100644 sportshub-infrastructure/pom.xml create mode 100644 sportshub-infrastructure/src/main/java/org/sportshub/infrastructure/user/adapter/UserInMemoryAdapter.java diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..da23e81 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3.9' + +services: + sporthub-database: + container_name: "sportshub-database" + image: "postgres:16" + ports: + - "50001:5432" + networks: + - "sportshub-local-network" + +networks: + sportshub-local-network: \ No newline at end of file diff --git a/pom.xml b/pom.xml index 19ce565..7936024 100644 --- a/pom.xml +++ b/pom.xml @@ -13,9 +13,14 @@ 21 + 21 + 21 + sportshub-domain + sportshub-application + sportshub-infrastructure sportshub-exposition sportshub-launcher @@ -34,6 +39,21 @@ sportshub-exposition ${project.version} + + org.sportshub + sportshub-application + ${project.version} + + + org.sportshub + sportshub-domain + ${project.version} + + + org.sportshub + sportshub-infrastructure + ${project.version} + diff --git a/sportshub-application/pom.xml b/sportshub-application/pom.xml new file mode 100644 index 0000000..1fb543c --- /dev/null +++ b/sportshub-application/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + org.sportshub + sportshub-parent + 0.0.1-SNAPSHOT + + + + sportshub-application + + sportshub-application + Demo project for Spring Boot + + jar + + + + org.sportshub + sportshub-domain + + + org.springframework + spring-context + + + diff --git a/sportshub-application/src/main/java/org/sportshub/application/user/UserUseCases.java b/sportshub-application/src/main/java/org/sportshub/application/user/UserUseCases.java new file mode 100644 index 0000000..34ded03 --- /dev/null +++ b/sportshub-application/src/main/java/org/sportshub/application/user/UserUseCases.java @@ -0,0 +1,21 @@ +package org.sportshub.application.user; + +import java.util.Optional; +import java.util.UUID; + +import org.sportshub.domain.user.model.User; +import org.sportshub.domain.user.port.UserPort; +import org.springframework.stereotype.Service; + +@Service +public class UserUseCases { + private final UserPort userPort; + + public UserUseCases(final UserPort userPort) { + this.userPort = userPort; + } + + public Optional findById(UUID userId) { + return userPort.findById(userId); + } +} diff --git a/sportshub-domain/pom.xml b/sportshub-domain/pom.xml new file mode 100644 index 0000000..6866f2c --- /dev/null +++ b/sportshub-domain/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + org.sportshub + sportshub-parent + 0.0.1-SNAPSHOT + + + + sportshub-domain + + sportshub-domain + Demo project for Spring Boot + + + + org.apache.maven.plugins + maven-compiler-plugin + + 16 + 16 + + + + + + jar + diff --git a/sportshub-domain/src/main/java/org/sportshub/domain/user/model/User.java b/sportshub-domain/src/main/java/org/sportshub/domain/user/model/User.java new file mode 100644 index 0000000..556753d --- /dev/null +++ b/sportshub-domain/src/main/java/org/sportshub/domain/user/model/User.java @@ -0,0 +1,8 @@ +package org.sportshub.domain.user.model; + +import java.util.UUID; + +public record User( + UUID id, + String password +) {} diff --git a/sportshub-domain/src/main/java/org/sportshub/domain/user/port/UserPort.java b/sportshub-domain/src/main/java/org/sportshub/domain/user/port/UserPort.java new file mode 100644 index 0000000..b1d9872 --- /dev/null +++ b/sportshub-domain/src/main/java/org/sportshub/domain/user/port/UserPort.java @@ -0,0 +1,10 @@ +package org.sportshub.domain.user.port; + +import java.util.Optional; +import java.util.UUID; + +import org.sportshub.domain.user.model.User; + +public interface UserPort { + Optional findById(UUID userId); +} diff --git a/sportshub-exposition/src/main/java/org/sportshub/exposition/user/UserController.java b/sportshub-exposition/src/main/java/org/sportshub/exposition/user/UserController.java new file mode 100644 index 0000000..7bc917d --- /dev/null +++ b/sportshub-exposition/src/main/java/org/sportshub/exposition/user/UserController.java @@ -0,0 +1,23 @@ +package org.sportshub.exposition.user; + +import java.util.UUID; + +import org.sportshub.application.user.UserUseCases; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/users") +public class UserController { + private final UserUseCases userUseCases; + + public UserController(final UserUseCases userUseCases) { + this.userUseCases = userUseCases; + } + + @PostMapping + public String login() { + return ""; + } +} diff --git a/sportshub-infrastructure/pom.xml b/sportshub-infrastructure/pom.xml new file mode 100644 index 0000000..d2ee38e --- /dev/null +++ b/sportshub-infrastructure/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + org.sportshub + sportshub-parent + 0.0.1-SNAPSHOT + + + + sportshub-infrastructure + + sportshub-infrastructure + Demo project for Spring Boot + + jar + + + + org.sportshub + sportshub-domain + + + org.springframework + spring-context + + + diff --git a/sportshub-infrastructure/src/main/java/org/sportshub/infrastructure/user/adapter/UserInMemoryAdapter.java b/sportshub-infrastructure/src/main/java/org/sportshub/infrastructure/user/adapter/UserInMemoryAdapter.java new file mode 100644 index 0000000..ae8047a --- /dev/null +++ b/sportshub-infrastructure/src/main/java/org/sportshub/infrastructure/user/adapter/UserInMemoryAdapter.java @@ -0,0 +1,25 @@ +package org.sportshub.infrastructure.user.adapter; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +import org.sportshub.domain.user.model.User; +import org.sportshub.domain.user.port.UserPort; +import org.springframework.stereotype.Component; + +@Component +public class UserInMemoryAdapter implements UserPort { + private static final List users = List.of( + new User(UUID.fromString("c1a0805f-c618-47dc-bae7-bee70503644e"), "password"), + new User(UUID.fromString("4eff194d-dd8e-463e-974f-034bfd509f84"), "password"), + new User(UUID.fromString("c78d7d7c-0386-415d-86dc-98a470591e07"), "password") + ); + + @Override + public Optional findById(final UUID userId) { + return users.stream() + .filter(user -> userId.equals(user.id())) + .findFirst(); + } +} diff --git a/sportshub-launcher/pom.xml b/sportshub-launcher/pom.xml index b85db97..c3ccf13 100644 --- a/sportshub-launcher/pom.xml +++ b/sportshub-launcher/pom.xml @@ -21,6 +21,18 @@ org.sportshub sportshub-exposition + + org.sportshub + sportshub-application + + + org.sportshub + sportshub-domain + + + org.sportshub + sportshub-infrastructure + diff --git a/sportshub-launcher/src/main/java/org/sportshub/launcher/ApplicationLauncher.java b/sportshub-launcher/src/main/java/org/sportshub/launcher/ApplicationLauncher.java index ac055ae..44602fe 100644 --- a/sportshub-launcher/src/main/java/org/sportshub/launcher/ApplicationLauncher.java +++ b/sportshub-launcher/src/main/java/org/sportshub/launcher/ApplicationLauncher.java @@ -5,7 +5,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication -@ComponentScan(basePackages = "org.sportshub.exposition") +@ComponentScan(basePackages = { + "org.sportshub.exposition", + "org.sportshub.application", + "org.sportshub.domain", + "org.sportshub.infrastructure" +}) public class ApplicationLauncher { public static void main(String[] args) { SpringApplication.run(ApplicationLauncher.class, args);