diff --git a/.gitignore b/.gitignore index c2065bc26..e886013be 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,7 @@ out/ ### VS Code ### .vscode/ + +### Secrets ### +application*.properties +schema.sql diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..0b5f74f4d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "spring-basic-roomescape-playground-submodule"] + path = spring-basic-roomescape-playground-submodule + url = https://github.com/zhy2on/spring-basic-roomescape-playground-submodule.git diff --git a/build.gradle b/build.gradle index 8d52aebc6..255721a48 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' - implementation 'org.springframework.boot:spring-boot-starter-jdbc' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'dev.akkinoc.spring.boot:logback-access-spring-boot-starter:4.0.0' @@ -32,3 +32,11 @@ dependencies { test { useJUnitPlatform() } + +processResources.dependsOn('copySecret') + +tasks.register('copySecret', Copy) { + from './spring-basic-roomescape-playground-submodule' + include 'application*.properties' + into './src/main/resources' +} diff --git a/spring-basic-roomescape-playground-submodule b/spring-basic-roomescape-playground-submodule new file mode 160000 index 000000000..cc3eeb300 --- /dev/null +++ b/spring-basic-roomescape-playground-submodule @@ -0,0 +1 @@ +Subproject commit cc3eeb3004c661fedfa6490f47637897fc991ad1 diff --git a/src/main/java/roomescape/DataLoader.java b/src/main/java/roomescape/DataLoader.java new file mode 100644 index 000000000..fda22efb8 --- /dev/null +++ b/src/main/java/roomescape/DataLoader.java @@ -0,0 +1,32 @@ +package roomescape; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; +import roomescape.member.Member; +import roomescape.member.MemberRepository; +import roomescape.theme.Theme; +import roomescape.theme.ThemeRepository; +import roomescape.time.Time; +import roomescape.time.TimeRepository; + +import java.util.Arrays; +import java.util.List; + +@Component +@Profile("!test") +public class DataLoader implements CommandLineRunner { + + private final MemberRepository memberRepository; + + public DataLoader(MemberRepository memberRepository) { + this.memberRepository = memberRepository; + } + + @Override + public void run(String... args) { + Member admin = new Member("어드민", "admin@email.com", "password", "ADMIN"); + Member brown = new Member("브라운", "brown@email.com", "password", "USER"); + memberRepository.saveAll(Arrays.asList(admin, brown)); + } +} diff --git a/src/main/java/roomescape/TestDataLoader.java b/src/main/java/roomescape/TestDataLoader.java new file mode 100644 index 000000000..b42f4bdcb --- /dev/null +++ b/src/main/java/roomescape/TestDataLoader.java @@ -0,0 +1,63 @@ +package roomescape; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; +import roomescape.member.Member; +import roomescape.member.MemberRepository; +import roomescape.reservation.Reservation; +import roomescape.reservation.ReservationRepository; +import roomescape.theme.Theme; +import roomescape.theme.ThemeRepository; +import roomescape.time.Time; +import roomescape.time.TimeRepository; + +import java.util.Arrays; +import java.util.List; + +@Component +@Profile("test") +public class TestDataLoader implements CommandLineRunner { + + private final MemberRepository memberRepository; + private final ThemeRepository themeRepository; + private final TimeRepository timeRepository; + private final ReservationRepository reservationRepository; + + public TestDataLoader(MemberRepository memberRepository, ThemeRepository themeRepository, + TimeRepository timeRepository, ReservationRepository reservationRepository) { + this.memberRepository = memberRepository; + this.themeRepository = themeRepository; + this.timeRepository = timeRepository; + this.reservationRepository = reservationRepository; + } + + @Override + public void run(String... args) { + Member admin = new Member("어드민", "admin@email.com", "password", "ADMIN"); + Member brown = new Member("브라운", "brown@email.com", "password", "USER"); + memberRepository.saveAll(Arrays.asList(admin, brown)); + + Theme theme1 = new Theme("테마1", "테마1입니다."); + Theme theme2 = new Theme("테마2", "테마2입니다."); + Theme theme3 = new Theme("테마3", "테마3입니다."); + themeRepository.saveAll(Arrays.asList(theme1, theme2, theme3)); + + List