Revert "chore: No upsert when saving datasource structure"

This reverts commit 75d2f2a8c4.
This commit is contained in:
Shrikant Sharat Kandula 2024-02-27 22:00:13 +05:30
parent 75d2f2a8c4
commit e7573a7b81
4 changed files with 20 additions and 30 deletions

View File

@ -5,5 +5,5 @@ import reactor.core.publisher.Mono;
public interface CustomDatasourceStorageStructureRepositoryCE { public interface CustomDatasourceStorageStructureRepositoryCE {
Mono<Void> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure); Mono<Integer> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure);
} }

View File

@ -2,30 +2,22 @@ package com.appsmith.server.repositories.ce;
import com.appsmith.external.models.DatasourceStorageStructure; import com.appsmith.external.models.DatasourceStorageStructure;
import com.appsmith.external.models.DatasourceStructure; import com.appsmith.external.models.DatasourceStructure;
import com.appsmith.server.helpers.ce.bridge.Bridge;
import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl; import com.appsmith.server.repositories.BaseAppsmithRepositoryImpl;
import com.appsmith.server.repositories.CacheableRepositoryHelper; import com.appsmith.server.repositories.CacheableRepositoryHelper;
import com.appsmith.server.repositories.DatasourceStorageStructureRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.mongodb.core.ReactiveMongoOperations; import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import static com.appsmith.server.helpers.ce.bridge.Bridge.bridge; import static org.springframework.data.mongodb.core.query.Criteria.where;
@Component @Component
public class CustomDatasourceStorageStructureRepositoryCEImpl public class CustomDatasourceStorageStructureRepositoryCEImpl
extends BaseAppsmithRepositoryImpl<DatasourceStorageStructure> extends BaseAppsmithRepositoryImpl<DatasourceStorageStructure>
implements CustomDatasourceStorageStructureRepositoryCE { implements CustomDatasourceStorageStructureRepositoryCE {
@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // Can't do lazy wiring in constructor params.
@Autowired
@Lazy
DatasourceStorageStructureRepository repository;
public CustomDatasourceStorageStructureRepositoryCEImpl( public CustomDatasourceStorageStructureRepositoryCEImpl(
ReactiveMongoOperations mongoOperations, ReactiveMongoOperations mongoOperations,
MongoConverter mongoConverter, MongoConverter mongoConverter,
@ -33,22 +25,20 @@ public class CustomDatasourceStorageStructureRepositoryCEImpl
super(mongoOperations, mongoConverter, cacheableRepositoryHelper); super(mongoOperations, mongoConverter, cacheableRepositoryHelper);
} }
public static Criteria getDatasourceIdAndEnvironmentIdCriteria(String datasourceId, String environmentId) {
return new Criteria()
.andOperator(
where(DatasourceStorageStructure.Fields.datasourceId).is(datasourceId),
where(DatasourceStorageStructure.Fields.environmentId).is(environmentId));
}
@Override @Override
public Mono<Void> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure) { public Mono<Integer> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure) {
final Bridge criteria = bridge().equal(DatasourceStorageStructure.Fields.datasourceId, datasourceId) return mongoOperations
.equal(DatasourceStorageStructure.Fields.environmentId, environmentId); .upsert(
new Query().addCriteria(getDatasourceIdAndEnvironmentIdCriteria(datasourceId, environmentId)),
final Update update = Update.update(DatasourceStorageStructure.Fields.structure, structure); Update.update(DatasourceStorageStructure.Fields.structure, structure),
DatasourceStorageStructure.class)
return queryBuilder().criteria(criteria).updateFirst(update).flatMap(count -> { .map(updateResult -> Math.toIntExact(updateResult.getModifiedCount()));
if (count == 0) {
DatasourceStorageStructure dss = new DatasourceStorageStructure();
dss.setDatasourceId(datasourceId);
dss.setEnvironmentId(environmentId);
dss.setStructure(structure);
return repository.save(dss).then();
}
return Mono.empty();
});
} }
} }

View File

@ -10,5 +10,5 @@ public interface DatasourceStructureServiceCE {
Mono<DatasourceStorageStructure> save(DatasourceStorageStructure datasourceStorageStructure); Mono<DatasourceStorageStructure> save(DatasourceStorageStructure datasourceStorageStructure);
Mono<Void> saveStructure(String datasourceId, String environmentId, DatasourceStructure structure); Mono<Integer> saveStructure(String datasourceId, String environmentId, DatasourceStructure structure);
} }

View File

@ -25,7 +25,7 @@ public class DatasourceStructureServiceCEImpl implements DatasourceStructureServ
} }
@Override @Override
public Mono<Void> saveStructure(String datasourceId, String environmentId, DatasourceStructure structure) { public Mono<Integer> saveStructure(String datasourceId, String environmentId, DatasourceStructure structure) {
return repository.updateStructure(datasourceId, environmentId, structure); return repository.updateStructure(datasourceId, environmentId, structure);
} }
} }