Skip to content

Commit 33581b3

Browse files
authored
Merge pull request #146 from prgrms-web-devcourse-final-project/node/13
[FEAT]: 로컬에서도 pgvector사용가능하게 변경
2 parents 1766c17 + e3e5674 commit 33581b3

File tree

18 files changed

+64
-94
lines changed

18 files changed

+64
-94
lines changed
Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
//package com.back.global.ai.config;
2-
//
3-
//import com.zaxxer.hikari.HikariDataSource;
4-
//import org.springframework.context.annotation.*;
5-
//import org.testcontainers.containers.PostgreSQLContainer;
6-
//
7-
//import javax.sql.DataSource;
8-
//
9-
//@Configuration
10-
//@Profile("test")
11-
//public class PgVectorContainerConfig {
12-
//
13-
// @Bean(initMethod = "start", destroyMethod = "stop")
14-
// public PostgreSQLContainer<?> pgContainer() {
15-
// // 여기서 이미지 고정
16-
// PostgreSQLContainer<?> c = new PostgreSQLContainer<>("pgvector/pgvector:pg16");
17-
// // 필요하면 파라미터 추가
18-
// // c.withReuse(true);
19-
// return c;
20-
// }
21-
//
22-
// @Bean
23-
// public DataSource dataSource(PostgreSQLContainer<?> pg) {
24-
// HikariDataSource ds = new HikariDataSource();
25-
// ds.setJdbcUrl(pg.getJdbcUrl());
26-
// ds.setUsername(pg.getUsername());
27-
// ds.setPassword(pg.getPassword());
28-
// // 드라이버는 Hikari가 JDBC URL로 자동 판단 (org.postgresql.Driver)
29-
// return ds;
30-
// }
31-
//}
1+
package com.back.global.ai.config;
2+
3+
import com.zaxxer.hikari.HikariDataSource;
4+
import org.springframework.context.annotation.*;
5+
import org.testcontainers.containers.PostgreSQLContainer;
6+
7+
import javax.sql.DataSource;
8+
9+
@Configuration
10+
@Profile("test-pg")
11+
public class PgVectorContainerConfig {
12+
13+
@Bean(initMethod = "start", destroyMethod = "stop")
14+
public PostgreSQLContainer<?> pgContainer() {
15+
// 여기서 이미지 고정
16+
PostgreSQLContainer<?> c = new PostgreSQLContainer<>("pgvector/pgvector:pg16");
17+
// 필요하면 파라미터 추가
18+
// c.withReuse(true);
19+
return c;
20+
}
21+
22+
@Bean
23+
public DataSource dataSource(PostgreSQLContainer<?> pg) {
24+
HikariDataSource ds = new HikariDataSource();
25+
ds.setJdbcUrl(pg.getJdbcUrl());
26+
ds.setUsername(pg.getUsername());
27+
ds.setPassword(pg.getPassword());
28+
// 드라이버는 Hikari가 JDBC URL로 자동 판단 (org.postgresql.Driver)
29+
return ds;
30+
}
31+
}

back/src/main/java/com/back/global/ai/vector/AIVectorServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.Map;
2020

2121
@Service
22-
@Profile("!test")
22+
@Profile("!test & !test-pg")
2323
@RequiredArgsConstructor
2424
public class AIVectorServiceImpl implements AIVectorService {
2525

back/src/main/java/com/back/global/ai/vector/AIVectorServiceStub.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import java.util.List;
1212

1313
@Service
14-
@Profile("test")
14+
@Profile({"test", "test-pg"})
1515
public class AIVectorServiceStub implements AIVectorService {
1616

1717
// 다음 입력 힌트(상수 또는 null) 반환

back/src/main/java/com/back/global/config/EmbeddedRedisConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* - test 프로필에서만 활성화
1515
*/
1616
@Configuration
17-
@Profile("test")
17+
@Profile({"test","test-pg"})
1818
public class EmbeddedRedisConfig {
1919

2020
@Value("${spring.data.redis.port}")

back/src/main/resources/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ spring:
1010
flyway:
1111
enabled: false
1212
profiles:
13-
active: test
13+
active: test-pg
1414
output:
1515
ansi:
1616
enabled: always

back/src/test/java/com/back/domain/comment/controller/CommentControllerTest.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.springframework.http.MediaType;
2424
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
2525
import org.springframework.security.core.context.SecurityContextHolder;
26-
import org.springframework.test.context.ActiveProfiles;
2726
import org.springframework.test.context.jdbc.Sql;
2827
import org.springframework.test.context.jdbc.SqlConfig;
2928
import org.springframework.test.web.servlet.MockMvc;
@@ -39,26 +38,20 @@
3938
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
4039
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
4140

42-
@ActiveProfiles("test")
41+
4342
@SpringBootTest
4443
@AutoConfigureMockMvc(addFilters = false)
4544
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
4645
@Sql(
4746
statements = {
48-
"SET REFERENTIAL_INTEGRITY FALSE",
49-
"TRUNCATE TABLE COMMENTS",
50-
"TRUNCATE TABLE POST",
51-
"TRUNCATE TABLE USERS",
52-
53-
"ALTER TABLE COMMENTS ALTER COLUMN id RESTART WITH 1",
54-
"ALTER TABLE POST ALTER COLUMN id RESTART WITH 1",
55-
"ALTER TABLE USERS ALTER COLUMN id RESTART WITH 1",
56-
"SET REFERENTIAL_INTEGRITY TRUE"
47+
"TRUNCATE TABLE public.comments, public.post, public.users RESTART IDENTITY CASCADE"
5748
},
5849
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD
5950
)
51+
6052
class CommentControllerTest {
6153

54+
6255
@Autowired private UserRepository userRepository;
6356
@Autowired private PostRepository postRepository;
6457
@Autowired private CommentRepository commentRepository;

back/src/test/java/com/back/domain/like/controller/LikeControllerTest.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.springframework.boot.test.context.SpringBootTest;
2525
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
2626
import org.springframework.security.core.context.SecurityContextHolder;
27-
import org.springframework.test.context.ActiveProfiles;
2827
import org.springframework.test.context.jdbc.Sql;
2928
import org.springframework.test.context.jdbc.SqlConfig;
3029
import org.springframework.test.web.servlet.MockMvc;
@@ -47,22 +46,10 @@
4746
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
4847
@Sql(
4948
statements = {
50-
"SET REFERENTIAL_INTEGRITY FALSE",
51-
"TRUNCATE TABLE COMMENT_LIKES",
52-
"TRUNCATE TABLE COMMENTS",
53-
"TRUNCATE TABLE POST_LIKES",
54-
"TRUNCATE TABLE POST",
55-
"TRUNCATE TABLE USERS",
56-
"ALTER TABLE COMMENT_LIKES ALTER COLUMN ID RESTART WITH 1",
57-
"ALTER TABLE COMMENTS ALTER COLUMN ID RESTART WITH 1",
58-
"ALTER TABLE POST_LIKES ALTER COLUMN ID RESTART WITH 1",
59-
"ALTER TABLE POST ALTER COLUMN ID RESTART WITH 1",
60-
"ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 1",
61-
"SET REFERENTIAL_INTEGRITY TRUE"
49+
"TRUNCATE TABLE public.comment_likes, public.comments, public.post_likes, public.post, public.users RESTART IDENTITY CASCADE"
6250
},
6351
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD
6452
)
65-
@ActiveProfiles("test")
6653
@SpringBootTest
6754
@AutoConfigureMockMvc(addFilters = false)
6855
class LikeControllerTest {

back/src/test/java/com/back/domain/node/controller/BaseLineControllerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
2626
import org.springframework.security.core.context.SecurityContext;
2727
import org.springframework.security.core.context.SecurityContextHolder;
28+
import org.springframework.test.context.ActiveProfiles;
2829
import org.springframework.test.context.jdbc.Sql;
2930
import org.springframework.test.context.jdbc.SqlConfig;
3031
import org.springframework.test.web.servlet.MockMvc;
@@ -43,6 +44,7 @@
4344
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
4445

4546
@SpringBootTest
47+
@ActiveProfiles("test")
4648
@AutoConfigureMockMvc(addFilters = true)
4749
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
4850
@DisplayName("Re:Life — BaseLine/BaseNode 통합 테스트 (보안 일괄 적용)")

back/src/test/java/com/back/domain/node/controller/DecisionLineControllerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
2525
import org.springframework.boot.test.context.SpringBootTest;
2626
import org.springframework.http.MediaType;
27+
import org.springframework.test.context.ActiveProfiles;
2728
import org.springframework.test.context.jdbc.Sql;
2829
import org.springframework.test.context.jdbc.SqlConfig;
2930
import org.springframework.test.web.servlet.MockMvc;
@@ -40,6 +41,7 @@
4041
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
4142

4243
@SpringBootTest
44+
@ActiveProfiles("test")
4345
@AutoConfigureMockMvc(addFilters = true) // ★ 필터 활성화
4446
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
4547
@DisplayName("Re:Life — DecisionLine 조회(목록·상세) 통합 테스트")

back/src/test/java/com/back/domain/node/controller/SecurityAndErrorPayloadTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.springframework.boot.test.context.SpringBootTest;
1313
import org.springframework.http.MediaType;
1414
import org.springframework.security.core.context.SecurityContextHolder;
15+
import org.springframework.test.context.ActiveProfiles;
1516
import org.springframework.test.context.jdbc.Sql;
1617
import org.springframework.test.context.jdbc.SqlConfig;
1718
import org.springframework.test.web.servlet.MockMvc;
@@ -26,6 +27,7 @@
2627
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
2728

2829
@SpringBootTest
30+
@ActiveProfiles("test")
2931
@AutoConfigureMockMvc(addFilters = true)
3032
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
3133
@DisplayName("Re:Life — 인증/권한 & 오류 페이로드")

0 commit comments

Comments
 (0)