Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: refactor crud repository methods #38144

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.appsmith.server.repositories.ce;

import com.appsmith.external.models.DatasourceStorageStructure;
import com.appsmith.external.models.DatasourceStructure;
import reactor.core.publisher.Mono;

public interface CustomDatasourceStorageStructureRepositoryCE {

Mono<Integer> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure);

Mono<DatasourceStorageStructure> findByDatasourceIdAndEnvironmentId(String datasourceId, String environmentId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.appsmith.external.models.DatasourceStorageStructure;
import com.appsmith.external.models.DatasourceStructure;
import com.appsmith.server.helpers.ce.bridge.Bridge;
import com.appsmith.server.helpers.ce.bridge.BridgeQuery;
import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
Expand All @@ -19,4 +20,13 @@ public Mono<Integer> updateStructure(String datasourceId, String environmentId,
.equal(DatasourceStorageStructure.Fields.environmentId, environmentId))
.updateFirst(Bridge.update().set(DatasourceStorageStructure.Fields.structure, structure));
}

@Override
public Mono<DatasourceStorageStructure> findByDatasourceIdAndEnvironmentId(
String datasourceId, String environmentId) {
final BridgeQuery<DatasourceStorageStructure> q = Bridge.<DatasourceStorageStructure>equal(
DatasourceStorageStructure.Fields.datasourceId, datasourceId)
.equal(DatasourceStorageStructure.Fields.environmentId, environmentId);
return queryBuilder().criteria(q).one();
}
Comment on lines +24 to +31
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Add compound index for datasourceId and environmentId

The DatasourceStorageStructure entity lacks a unique compound index for datasourceId and environmentId fields, which could lead to duplicate entries. Add the following annotation to ensure data integrity:

@CompoundIndex(def = "{'datasourceId': 1, 'environmentId': 1}", unique = true)
  • Location: app/server/external/src/main/java/com/appsmith/external/models/DatasourceStorageStructure.java
🔗 Analysis chain

LGTM! Verify unique constraint enforcement.

The implementation correctly uses the Bridge pattern for query construction.

Let's verify the unique constraint enforcement:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for unique index or constraint definitions
rg -t java "datasourceId.*environmentId.*unique" --no-heading

Length of output: 63


Script:

#!/bin/bash
# Search for unique index or constraint definitions in MongoDB documents
ast-grep --pattern 'class DatasourceStorageStructure {
  $$$
  @Index($$$)
  $$$
}'

# Search for unique index definitions in repository configuration
rg -t java "@Index.*datasourceId.*environmentId" -A 2 -B 2

# Search for compound index definitions
rg -t java "CompoundIndex.*datasourceId.*environmentId" -A 2 -B 2

Length of output: 214


Script:

#!/bin/bash
# Find and examine the DatasourceStorageStructure entity class
fd -e java "DatasourceStorageStructure.java" --exec cat {}

# Look for MongoDB index configurations in repository configuration files
fd -e java "MongoConfig" --exec cat {}

Length of output: 14924

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
import com.appsmith.external.models.DatasourceStorageStructure;
import com.appsmith.server.repositories.BaseRepository;
import com.appsmith.server.repositories.CustomDatasourceStorageStructureRepository;
import reactor.core.publisher.Mono;
import org.springframework.stereotype.Repository;

@Repository
public interface DatasourceStorageStructureRepositoryCE
extends BaseRepository<DatasourceStorageStructure, String>, CustomDatasourceStorageStructureRepository {

Mono<DatasourceStorageStructure> findByDatasourceIdAndEnvironmentId(String datasourceId, String environmentId);
}
extends BaseRepository<DatasourceStorageStructure, String>, CustomDatasourceStorageStructureRepository {}
Loading