From 4d8148e8627a734b479dbc07c0292d662babac25 Mon Sep 17 00:00:00 2001 From: Thomasr Date: Wed, 8 Jan 2025 12:00:53 -0500 Subject: [PATCH] Rename collection `applicationRecord` to `applicationVersion` --- .../domain/application/model/Application.java | 4 +-- ...ionRecord.java => ApplicationVersion.java} | 2 +- .../ApplicationRecordRepository.java | 10 +++---- .../service/ApplicationRecordService.java | 12 ++++---- .../service/ApplicationRecordServiceImpl.java | 18 ++++++------ .../service/ApplicationServiceImpl.java | 4 +-- .../ApplicationApiServiceImpl.java | 2 +- .../ApplicationRecordApiServiceImpl.java | 7 ++--- .../view/ApplicationRecordMetaView.java | 6 ++-- .../api/home/UserHomeApiServiceImpl.java | 10 +++---- .../runner/migrations/DatabaseChangelog.java | 29 +++++++++++++++++-- 11 files changed, 62 insertions(+), 42 deletions(-) rename server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/{ApplicationRecord.java => ApplicationVersion.java} (91%) diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java index a4d649995..978f5c8c6 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java @@ -141,7 +141,7 @@ public Mono getQueryByViewModeAndQueryId(boolean isViewMode, S @JsonIgnore public Mono> getLiveApplicationDsl(ApplicationRecordService applicationRecordService) { return applicationRecordService.getLatestRecordByApplicationId(this.getId()) - .map(ApplicationRecord::getApplicationDSL) + .map(ApplicationVersion::getApplicationDSL) .switchIfEmpty(Mono.just(editingApplicationDSL)); } @@ -237,7 +237,7 @@ public Mono getLiveContainerSize(ApplicationRecordService applicationRec } public Mono> getPublishedApplicationDSL(ApplicationRecordService applicationRecordService) { - return applicationRecordService.getLatestRecordByApplicationId(this.getId()).map(ApplicationRecord::getApplicationDSL); + return applicationRecordService.getLatestRecordByApplicationId(this.getId()).map(ApplicationVersion::getApplicationDSL); } } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/ApplicationRecord.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/ApplicationVersion.java similarity index 91% rename from server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/ApplicationRecord.java rename to server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/ApplicationVersion.java index d6f57893f..fb89e92d0 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/ApplicationRecord.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/ApplicationVersion.java @@ -14,7 +14,7 @@ @SuperBuilder @Jacksonized @NoArgsConstructor -public class ApplicationRecord extends HasIdAndAuditing { +public class ApplicationVersion extends HasIdAndAuditing { private String applicationId; private String tag; diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRecordRepository.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRecordRepository.java index dc333f9ed..cb447582b 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRecordRepository.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRecordRepository.java @@ -1,7 +1,7 @@ package org.lowcoder.domain.application.repository; -import org.lowcoder.domain.application.model.ApplicationRecord; +import org.lowcoder.domain.application.model.ApplicationVersion; import org.springframework.data.mongodb.repository.ReactiveMongoRepository; import org.springframework.stereotype.Repository; import reactor.core.publisher.Flux; @@ -10,14 +10,14 @@ import java.util.List; @Repository -public interface ApplicationRecordRepository extends ReactiveMongoRepository { +public interface ApplicationRecordRepository extends ReactiveMongoRepository { Mono deleteByApplicationId(String applicationId); - Flux findByApplicationId(String applicationId); + Flux findByApplicationId(String applicationId); - Flux findByApplicationIdIn(List ids); + Flux findByApplicationIdIn(List ids); - Mono findTop1ByApplicationIdOrderByCreatedAtDesc(String applicationId); + Mono findTop1ByApplicationIdOrderByCreatedAtDesc(String applicationId); } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationRecordService.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationRecordService.java index 2afe65d8e..56163e370 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationRecordService.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationRecordService.java @@ -1,21 +1,21 @@ package org.lowcoder.domain.application.service; -import org.lowcoder.domain.application.model.ApplicationRecord; +import org.lowcoder.domain.application.model.ApplicationVersion; import reactor.core.publisher.Mono; import java.util.List; import java.util.Map; public interface ApplicationRecordService { - Mono insert(ApplicationRecord applicationRecord); + Mono insert(ApplicationVersion applicationRecord); - Mono> getByApplicationId(String applicationId); + Mono> getByApplicationId(String applicationId); - Mono>> getByApplicationIdIn(List applicationIdList); + Mono>> getByApplicationIdIn(List applicationIdList); - Mono getById(String id); + Mono getById(String id); - Mono getLatestRecordByApplicationId(String applicationId); + Mono getLatestRecordByApplicationId(String applicationId); Mono deleteAllApplicationTagByApplicationId(String applicationId); diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationRecordServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationRecordServiceImpl.java index 9c7bcb482..1e6553ee1 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationRecordServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationRecordServiceImpl.java @@ -1,7 +1,7 @@ package org.lowcoder.domain.application.service; import lombok.RequiredArgsConstructor; -import org.lowcoder.domain.application.model.ApplicationRecord; +import org.lowcoder.domain.application.model.ApplicationVersion; import org.lowcoder.domain.application.repository.ApplicationRecordRepository; import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; @@ -21,7 +21,7 @@ public class ApplicationRecordServiceImpl implements ApplicationRecordService { private final ApplicationRecordRepository applicationRecordRepository; @Override - public Mono insert(ApplicationRecord applicationRecord) { + public Mono insert(ApplicationVersion applicationRecord) { return applicationRecordRepository.save(applicationRecord); } @@ -29,23 +29,23 @@ public Mono insert(ApplicationRecord applicationRecord) { * get all published versions */ @Override - public Mono> getByApplicationId(String applicationId) { + public Mono> getByApplicationId(String applicationId) { return applicationRecordRepository.findByApplicationId(applicationId) - .sort(Comparator.comparing(ApplicationRecord::getCreatedAt).reversed()) + .sort(Comparator.comparing(ApplicationVersion::getCreatedAt).reversed()) .collectList(); } @Override - public Mono>> getByApplicationIdIn(List applicationIdList) { + public Mono>> getByApplicationIdIn(List applicationIdList) { return applicationRecordRepository.findByApplicationIdIn(applicationIdList) - .sort(Comparator.comparing(ApplicationRecord::getCreatedAt).reversed()) + .sort(Comparator.comparing(ApplicationVersion::getCreatedAt).reversed()) .collectList() .map(applicationRecords -> applicationRecords.stream() - .collect(Collectors.groupingBy(ApplicationRecord::getApplicationId))); + .collect(Collectors.groupingBy(ApplicationVersion::getApplicationId))); } @Override - public Mono getById(String id) { + public Mono getById(String id) { return applicationRecordRepository.findById(id) .switchIfEmpty(deferredError(APPLICATION_NOT_FOUND, "APPLICATION_NOT_FOUND")); } @@ -54,7 +54,7 @@ public Mono getById(String id) { * get the latest published version */ @Override - public Mono getLatestRecordByApplicationId(String applicationId) { + public Mono getLatestRecordByApplicationId(String applicationId) { return applicationRecordRepository.findTop1ByApplicationIdOrderByCreatedAtDesc(applicationId); } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java index 9923cb61a..7c1ab537d 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java @@ -10,7 +10,7 @@ import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.lowcoder.domain.application.model.Application; -import org.lowcoder.domain.application.model.ApplicationRecord; +import org.lowcoder.domain.application.model.ApplicationVersion; import org.lowcoder.domain.application.model.ApplicationRequestType; import org.lowcoder.domain.application.model.ApplicationStatus; import org.lowcoder.domain.application.repository.ApplicationRepository; @@ -347,7 +347,7 @@ public Mono updateLastEditedAt(String applicationId, Instant time, Stri @Override public Mono> getLiveDSLByApplicationId(String applicationId) { return applicationRecordService.getLatestRecordByApplicationId(applicationId) - .map(ApplicationRecord::getApplicationDSL) + .map(ApplicationVersion::getApplicationDSL) .switchIfEmpty(findById(applicationId) .map(Application::getEditingApplicationDSL)); } diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java index 150d9e4c5..f60d41eae 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java @@ -368,7 +368,7 @@ public Mono publish(String applicationId, ApplicationPublishReq .flatMap(userId -> resourcePermissionService.checkAndReturnMaxPermission(userId, applicationId, PUBLISH_APPLICATIONS)) .delayUntil(__ -> applicationService.findById(applicationId) - .map(application -> ApplicationRecord.builder() + .map(application -> ApplicationVersion.builder() .tag(applicationPublishRequest.tag()) .commitMessage(applicationPublishRequest.commitMessage()) .applicationId(application.getId()) diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationRecordApiServiceImpl.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationRecordApiServiceImpl.java index 8d40e0e5d..6dc204218 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationRecordApiServiceImpl.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationRecordApiServiceImpl.java @@ -2,13 +2,12 @@ import lombok.RequiredArgsConstructor; import org.lowcoder.api.home.SessionUserService; -import org.lowcoder.api.application.ApplicationApiServiceImpl; import org.lowcoder.api.application.view.ApplicationRecordMetaView; import org.lowcoder.api.usermanagement.OrgDevChecker; +import org.lowcoder.domain.application.model.ApplicationVersion; import org.lowcoder.domain.organization.model.OrgMember; import org.lowcoder.domain.application.model.Application; import org.lowcoder.domain.application.model.ApplicationCombineId; -import org.lowcoder.domain.application.model.ApplicationRecord; import org.lowcoder.domain.application.service.ApplicationRecordService; import org.lowcoder.domain.application.service.ApplicationService; import org.lowcoder.domain.user.service.UserService; @@ -41,7 +40,7 @@ public Mono> getRecordDSLFromApplicationCombineId(Applicatio return applicationService.getLiveDSLByApplicationId(applicationCombineId.applicationId()); } return applicationRecordService.getById(applicationCombineId.applicationRecordId()) - .map(ApplicationRecord::getApplicationDSL); + .map(ApplicationVersion::getApplicationDSL); })); } @@ -55,7 +54,7 @@ public Mono delete(String id) { public Mono> getByApplicationId(String applicationId) { return applicationRecordService.getByApplicationId(applicationId) .flatMap(applicationRecords -> multiBuild(applicationRecords, - ApplicationRecord::getCreatedBy, + ApplicationVersion::getCreatedBy, userService::getByIds, ApplicationRecordMetaView::from )); diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/view/ApplicationRecordMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/view/ApplicationRecordMetaView.java index 8b6ab4369..a378b250a 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/view/ApplicationRecordMetaView.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/view/ApplicationRecordMetaView.java @@ -1,6 +1,6 @@ package org.lowcoder.api.application.view; -import org.lowcoder.domain.application.model.ApplicationRecord; +import org.lowcoder.domain.application.model.ApplicationVersion; import org.lowcoder.domain.user.model.User; public record ApplicationRecordMetaView(String id, @@ -10,7 +10,7 @@ public record ApplicationRecordMetaView(String id, long createTime, String creatorName) { - public static ApplicationRecordMetaView from(ApplicationRecord applicationRecord) { + public static ApplicationRecordMetaView from(ApplicationVersion applicationRecord) { return new ApplicationRecordMetaView(applicationRecord.getId(), applicationRecord.getApplicationId(), applicationRecord.getTag(), @@ -19,7 +19,7 @@ public static ApplicationRecordMetaView from(ApplicationRecord applicationRecord null); } - public static ApplicationRecordMetaView from(ApplicationRecord applicationRecord, User applicationRecordCreator) { + public static ApplicationRecordMetaView from(ApplicationVersion applicationRecord, User applicationRecordCreator) { return new ApplicationRecordMetaView(applicationRecord.getId(), applicationRecord.getApplicationId(), applicationRecord.getTag(), diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/UserHomeApiServiceImpl.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/UserHomeApiServiceImpl.java index ce20a0c17..efc27c41a 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/UserHomeApiServiceImpl.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/UserHomeApiServiceImpl.java @@ -4,7 +4,6 @@ import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.lowcoder.api.application.view.ApplicationInfoView; -import org.lowcoder.api.application.view.ApplicationInfoView.ApplicationInfoViewBuilder; import org.lowcoder.api.application.view.MarketplaceApplicationInfoView; import org.lowcoder.api.bundle.view.BundleInfoView; import org.lowcoder.api.bundle.view.MarketplaceBundleInfoView; @@ -12,7 +11,7 @@ import org.lowcoder.api.usermanagement.view.OrgAndVisitorRoleView; import org.lowcoder.api.usermanagement.view.UserProfileView; import org.lowcoder.domain.application.model.Application; -import org.lowcoder.domain.application.model.ApplicationRecord; +import org.lowcoder.domain.application.model.ApplicationVersion; import org.lowcoder.domain.application.model.ApplicationStatus; import org.lowcoder.domain.application.model.ApplicationType; import org.lowcoder.domain.application.service.ApplicationRecordService; @@ -38,7 +37,6 @@ import org.lowcoder.infra.util.NetworkUtils; import org.lowcoder.infra.util.TupleUtils; import org.lowcoder.sdk.config.CommonConfig; -import org.lowcoder.sdk.models.VersionedModel; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Flux; @@ -574,7 +572,7 @@ private Mono buildView(Application application, ResourceRol .zipWith(application.getIcon(applicationRecordService), TupleUtils::merge) .zipWith(applicationRecordService.getLatestRecordByApplicationId(application.getId()).map(Optional::of).switchIfEmpty(Mono.just(Optional.empty())), TupleUtils::merge) .flatMap(tuple -> { - Optional lastAppRecord = tuple.getT5(); + Optional lastAppRecord = tuple.getT5(); ApplicationInfoView.ApplicationInfoViewBuilder applicationInfoViewBuilder = ApplicationInfoView.builder() .applicationId(application.getId()) .applicationGid(application.getGid()) @@ -585,8 +583,8 @@ private Mono buildView(Application application, ResourceRol .category(tuple.getT3()) .icon(tuple.getT4()) .published(lastAppRecord.isPresent()) - .publishedVersion(lastAppRecord.map(ApplicationRecord::version).orElse(null)) - .lastPublishedTime(lastAppRecord.map(ApplicationRecord::getCreatedAt).orElse(null)) + .publishedVersion(lastAppRecord.map(ApplicationVersion::version).orElse(null)) + .lastPublishedTime(lastAppRecord.map(ApplicationVersion::getCreatedAt).orElse(null)) .createBy(Optional.ofNullable(userMap.get(application.getCreatedBy())) .map(User::getName) .orElse("")) diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/runner/migrations/DatabaseChangelog.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/runner/migrations/DatabaseChangelog.java index b0b6175e4..e373ebc29 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/runner/migrations/DatabaseChangelog.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/runner/migrations/DatabaseChangelog.java @@ -4,8 +4,10 @@ import com.github.cloudyrock.mongock.ChangeSet; import com.github.cloudyrock.mongock.driver.mongodb.springdata.v4.decorator.impl.MongockTemplate; import com.github.f4b6a3.uuid.UuidCreator; +import com.mongodb.MongoNamespace; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; +import com.mongodb.client.MongoDatabase; import com.mongodb.client.result.DeleteResult; import lombok.extern.slf4j.Slf4j; import org.bson.Document; @@ -13,7 +15,7 @@ import org.lowcoder.domain.application.model.Application; import org.lowcoder.domain.application.model.ApplicationHistorySnapshot; import org.lowcoder.domain.application.model.ApplicationHistorySnapshotTS; -import org.lowcoder.domain.application.model.ApplicationRecord; +import org.lowcoder.domain.application.model.ApplicationVersion; import org.lowcoder.domain.bundle.model.Bundle; import org.lowcoder.domain.datasource.model.Datasource; import org.lowcoder.domain.datasource.model.DatasourceStructureDO; @@ -438,7 +440,7 @@ public void publishedToRecord(MongockTemplate mongoTemplate, CommonConfig common ObjectId id = document.getObjectId("_id"); String createdBy = document.getString("createdBy"); Map dslMap = documentToMap(dsl); - ApplicationRecord record = ApplicationRecord.builder() + ApplicationVersion record = ApplicationVersion.builder() .applicationId(id.toHexString()) .applicationDSL(dslMap) .commitMessage("") @@ -453,7 +455,28 @@ public void publishedToRecord(MongockTemplate mongoTemplate, CommonConfig common } @ChangeSet(order = "029", id = "add-tag-index-to-record", author = "Thomas") public void addTagIndexToRecord(MongockTemplate mongoTemplate, CommonConfig commonConfig) { - ensureIndexes(mongoTemplate, ApplicationRecord.class, makeIndex("applicationId", "tag").unique()); + ensureIndexes(mongoTemplate, ApplicationVersion.class, makeIndex("applicationId", "tag").unique()); + } + + @ChangeSet(order = "030", id = "rename-application-record-collection", author = "Thomas") + public void renameApplicationRecordCollection(MongockTemplate mongoTemplate, MongoDatabase mongoDatabase) { + String oldCollectionName = "applicationRecord"; + String newCollectionName = "applicationVersion"; + + // Check if the old collection exists + boolean collectionExists = mongoDatabase.listCollectionNames() + .into(new java.util.ArrayList<>()) + .contains(oldCollectionName); + + if (collectionExists) { + // Rename the collection + mongoDatabase.getCollection(oldCollectionName) + .renameCollection(new MongoNamespace(mongoDatabase.getName(), newCollectionName)); + System.out.println("Collection renamed from " + oldCollectionName + " to " + newCollectionName); + } else { + System.out.println("Collection " + oldCollectionName + " does not exist, skipping rename."); + } + } private void addGidField(MongockTemplate mongoTemplate, String collectionName) {