Skip to content

Commit 03565d7

Browse files
committed
Extracted Config
1 parent 06f3d9b commit 03565d7

File tree

4 files changed

+36
-20
lines changed

4 files changed

+36
-20
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.mongodb.frauddetector.config;
2+
3+
import com.mongodb.client.MongoClient;
4+
import com.mongodb.client.MongoCollection;
5+
import com.mongodb.client.MongoDatabase;
6+
import org.bson.Document;
7+
import org.springframework.context.annotation.Bean;
8+
import org.springframework.context.annotation.Configuration;
9+
10+
@Configuration
11+
public class MongoDBConfig {
12+
13+
private static final String DATABASE_NAME = "fraud";
14+
private static final String TRANSACTIONS_COLLECTION = "transactions";
15+
16+
@Bean
17+
public MongoDatabase fraudDatabase(MongoClient mongoClient) {
18+
return mongoClient.getDatabase(DATABASE_NAME);
19+
}
20+
21+
@Bean
22+
public MongoCollection<Document> transactionsCollection(MongoDatabase fraudDatabase) {
23+
return fraudDatabase.getCollection(TRANSACTIONS_COLLECTION);
24+
}
25+
}

src/main/java/com/mongodb/frauddetector/service/TransactionChangeStreamListener.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,21 @@
1818
public class TransactionChangeStreamListener {
1919
private static final Logger logger = LoggerFactory.getLogger(TransactionChangeStreamListener.class);
2020

21-
private final MongoClient mongoClient;
2221
private final TransactionVectorSearchService vectorSearchService;
2322
private final ExecutorService executorService = Executors.newSingleThreadExecutor(); // Keeps it synchronous
23+
private final MongoCollection<Document> transactionsCollection;
2424

25-
public TransactionChangeStreamListener(MongoClient mongoClient, TransactionVectorSearchService vectorSearchService) {
26-
this.mongoClient = mongoClient;
25+
public TransactionChangeStreamListener(TransactionVectorSearchService vectorSearchService, MongoCollection<Document> transactionsCollection) {
26+
this.transactionsCollection = transactionsCollection;
2727
this.vectorSearchService = vectorSearchService;
2828
}
2929

3030
public void startListening() {
3131
executorService.submit(() -> {
32-
MongoDatabase database = mongoClient.getDatabase("fraud");
33-
MongoCollection<Document> collection = database.getCollection("transactions");
34-
3532
// Filter to only listen for INSERT operations
3633
List<Bson> pipeline = List.of(Aggregates.match(Filters.eq("operationType", "insert")));
3734

38-
try (MongoCursor<ChangeStreamDocument<Document>> cursor = collection.watch(pipeline).iterator()) {
35+
try (MongoCursor<ChangeStreamDocument<Document>> cursor = transactionsCollection.watch(pipeline).iterator()) {
3936
while (cursor.hasNext()) {
4037
ChangeStreamDocument<Document> change = cursor.next();
4138
Document transactionDoc = change.getFullDocument();

src/main/java/com/mongodb/frauddetector/service/TransactionSeeder.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.mongodb.frauddetector.service;
22

3-
import com.mongodb.client.MongoClient;
43
import com.mongodb.client.MongoCollection;
5-
import com.mongodb.client.MongoDatabase;
64
import com.mongodb.frauddetector.model.Customer;
75
import com.mongodb.frauddetector.model.Transaction;
86
import com.mongodb.frauddetector.repository.CustomerRepository;
@@ -19,17 +17,16 @@
1917
@Service
2018
public class TransactionSeeder {
2119
private static final Logger logger = LoggerFactory.getLogger(TransactionSeeder.class);
22-
private final MongoCollection<Document> transactionCollection;
2320
private final CustomerRepository customerRepository;
2421
private final EmbeddingGenerator embeddingGenerator;
2522
private final TransactionRepository transactionRepository;
2623
private final TransactionChangeStreamListener transactionChangeStreamListener;
24+
private final MongoCollection<Document> transactionsCollection;
2725

28-
public TransactionSeeder(MongoClient mongoClient, CustomerRepository customerRepository,
26+
public TransactionSeeder(CustomerRepository customerRepository,
2927
EmbeddingGenerator embeddingGenerator, TransactionRepository transactionRepository,
30-
TransactionChangeStreamListener transactionChangeStreamListener) {
31-
MongoDatabase database = mongoClient.getDatabase("fraud");
32-
this.transactionCollection = database.getCollection("transactions");
28+
TransactionChangeStreamListener transactionChangeStreamListener, MongoCollection<Document> transactionsCollection) {
29+
this.transactionsCollection = transactionsCollection;
3330
this.transactionRepository = transactionRepository;
3431
this.customerRepository = customerRepository;
3532
this.embeddingGenerator = embeddingGenerator;
@@ -38,7 +35,7 @@ public TransactionSeeder(MongoClient mongoClient, CustomerRepository customerRep
3835

3936
@PostConstruct
4037
public void seedTransactions() {
41-
if (transactionCollection.countDocuments() > 0) {
38+
if (transactionsCollection.countDocuments() > 0) {
4239
logger.info("Transactions already seeded.");
4340
return;
4441
}

src/main/java/com/mongodb/frauddetector/service/TransactionVectorSearchService.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.mongodb.frauddetector.service;
22

3-
import com.mongodb.client.MongoClient;
43
import com.mongodb.client.MongoCollection;
5-
import com.mongodb.client.MongoDatabase;
64
import com.mongodb.client.model.Aggregates;
75
import com.mongodb.client.model.Filters;
86
import com.mongodb.client.model.Updates;
@@ -28,9 +26,8 @@ public class TransactionVectorSearchService {
2826
private static final int SEARCH_LIMIT = 5; // Number of similar transactions to retrieve
2927
private static final int NUM_CANDIDATES = 50; // Number of approximate neighbors to consider
3028

31-
public TransactionVectorSearchService(MongoClient mongoClient) {
32-
MongoDatabase database = mongoClient.getDatabase("fraud");
33-
this.transactionCollection = database.getCollection("transactions");
29+
public TransactionVectorSearchService(MongoCollection<Document> transactionCollection) {
30+
this.transactionCollection = transactionCollection;
3431
}
3532

3633
public void evaluateTransactionFraud(Document transactionDoc) {

0 commit comments

Comments
 (0)