Revert "chore: No upsert when saving datasource structure"
This reverts commit 75d2f2a8c4.
This commit is contained in:
parent
75d2f2a8c4
commit
e7573a7b81
|
|
@ -5,5 +5,5 @@ import reactor.core.publisher.Mono;
|
|||
|
||||
public interface CustomDatasourceStorageStructureRepositoryCE {
|
||||
|
||||
Mono<Void> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure);
|
||||
Mono<Integer> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,30 +2,22 @@ package com.appsmith.server.repositories.ce;
|
|||
|
||||
import com.appsmith.external.models.DatasourceStorageStructure;
|
||||
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.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.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.stereotype.Component;
|
||||
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
|
||||
public class CustomDatasourceStorageStructureRepositoryCEImpl
|
||||
extends BaseAppsmithRepositoryImpl<DatasourceStorageStructure>
|
||||
implements CustomDatasourceStorageStructureRepositoryCE {
|
||||
|
||||
@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // Can't do lazy wiring in constructor params.
|
||||
@Autowired
|
||||
@Lazy
|
||||
DatasourceStorageStructureRepository repository;
|
||||
|
||||
public CustomDatasourceStorageStructureRepositoryCEImpl(
|
||||
ReactiveMongoOperations mongoOperations,
|
||||
MongoConverter mongoConverter,
|
||||
|
|
@ -33,22 +25,20 @@ public class CustomDatasourceStorageStructureRepositoryCEImpl
|
|||
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
|
||||
public Mono<Void> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure) {
|
||||
final Bridge criteria = bridge().equal(DatasourceStorageStructure.Fields.datasourceId, datasourceId)
|
||||
.equal(DatasourceStorageStructure.Fields.environmentId, environmentId);
|
||||
|
||||
final Update update = Update.update(DatasourceStorageStructure.Fields.structure, structure);
|
||||
|
||||
return queryBuilder().criteria(criteria).updateFirst(update).flatMap(count -> {
|
||||
if (count == 0) {
|
||||
DatasourceStorageStructure dss = new DatasourceStorageStructure();
|
||||
dss.setDatasourceId(datasourceId);
|
||||
dss.setEnvironmentId(environmentId);
|
||||
dss.setStructure(structure);
|
||||
return repository.save(dss).then();
|
||||
}
|
||||
return Mono.empty();
|
||||
});
|
||||
public Mono<Integer> updateStructure(String datasourceId, String environmentId, DatasourceStructure structure) {
|
||||
return mongoOperations
|
||||
.upsert(
|
||||
new Query().addCriteria(getDatasourceIdAndEnvironmentIdCriteria(datasourceId, environmentId)),
|
||||
Update.update(DatasourceStorageStructure.Fields.structure, structure),
|
||||
DatasourceStorageStructure.class)
|
||||
.map(updateResult -> Math.toIntExact(updateResult.getModifiedCount()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@ public interface DatasourceStructureServiceCE {
|
|||
|
||||
Mono<DatasourceStorageStructure> save(DatasourceStorageStructure datasourceStorageStructure);
|
||||
|
||||
Mono<Void> saveStructure(String datasourceId, String environmentId, DatasourceStructure structure);
|
||||
Mono<Integer> saveStructure(String datasourceId, String environmentId, DatasourceStructure structure);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public class DatasourceStructureServiceCEImpl implements DatasourceStructureServ
|
|||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user