Skip to content

Commit 142c46b

Browse files
dragonpooludomikula
authored andcommitted
Publish application
1 parent 4581ddc commit 142c46b

File tree

6 files changed

+29
-14
lines changed

6 files changed

+29
-14
lines changed

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import jakarta.annotation.Nonnull;
44
import org.lowcoder.api.application.view.ApplicationInfoView;
55
import org.lowcoder.api.application.view.ApplicationPermissionView;
6+
import org.lowcoder.api.application.view.ApplicationPublishRequest;
67
import org.lowcoder.api.application.view.ApplicationView;
78
import org.lowcoder.domain.application.model.Application;
89
import org.lowcoder.domain.application.model.ApplicationRequestType;
@@ -33,7 +34,7 @@ public interface ApplicationApiService {
3334

3435
Mono<ApplicationView> update(String applicationId, Application application);
3536

36-
Mono<ApplicationView> publish(String applicationId);
37+
Mono<ApplicationView> publish(String applicationId, ApplicationPublishRequest applicationPublishRequest);
3738

3839
Mono<Boolean> updateEditState(String applicationId, ApplicationEndpoints.UpdateEditStateRequest updateEditStateRequest);
3940

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.lowcoder.api.application.ApplicationEndpoints.CreateApplicationRequest;
1414
import org.lowcoder.api.application.view.ApplicationInfoView;
1515
import org.lowcoder.api.application.view.ApplicationPermissionView;
16+
import org.lowcoder.api.application.view.ApplicationPublishRequest;
1617
import org.lowcoder.api.application.view.ApplicationView;
1718
import org.lowcoder.api.bizthreshold.AbstractBizThresholdChecker;
1819
import org.lowcoder.api.home.FolderApiService;
@@ -23,6 +24,7 @@
2324
import org.lowcoder.api.usermanagement.OrgDevChecker;
2425
import org.lowcoder.domain.application.model.*;
2526
import org.lowcoder.domain.application.service.ApplicationHistorySnapshotService;
27+
import org.lowcoder.domain.application.service.ApplicationRecordService;
2628
import org.lowcoder.domain.application.service.ApplicationService;
2729
import org.lowcoder.domain.datasource.model.Datasource;
2830
import org.lowcoder.domain.datasource.service.DatasourceService;
@@ -91,6 +93,7 @@ public class ApplicationApiServiceImpl implements ApplicationApiService {
9193
private final PermissionHelper permissionHelper;
9294
private final DatasourceService datasourceService;
9395
private final ApplicationHistorySnapshotService applicationHistorySnapshotService;
96+
private final ApplicationRecordService applicationRecordService;
9497

9598
@Override
9699
public Mono<ApplicationView> create(CreateApplicationRequest createApplicationRequest) {
@@ -352,11 +355,19 @@ private Mono<Application> doUpdateApplication(String applicationId, Application
352355
}
353356

354357
@Override
355-
public Mono<ApplicationView> publish(String applicationId) {
358+
public Mono<ApplicationView> publish(String applicationId, ApplicationPublishRequest applicationPublishRequest) {
356359
return checkApplicationStatus(applicationId, NORMAL)
357360
.then(sessionUserService.getVisitorId())
358361
.flatMap(userId -> resourcePermissionService.checkAndReturnMaxPermission(userId,
359362
applicationId, PUBLISH_APPLICATIONS))
363+
.delayUntil(__ -> applicationService.findById(applicationId)
364+
.map(application -> ApplicationRecord.builder()
365+
.tag(applicationPublishRequest.tag())
366+
.commitMessage(applicationPublishRequest.commitMessage())
367+
.applicationId(application.getId())
368+
.applicationDSL(application.getEditingApplicationDSL())
369+
.build())
370+
.map(applicationRecordService::insert))
360371
.flatMap(permission -> applicationService.publish(applicationId)
361372
.map(applicationUpdated -> ApplicationView.builder()
362373
.applicationInfoView(buildView(applicationUpdated, permission.getResourceRole().getValue()))

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package org.lowcoder.api.application;
22

33
import lombok.RequiredArgsConstructor;
4-
import org.lowcoder.api.application.view.ApplicationInfoView;
5-
import org.lowcoder.api.application.view.ApplicationPermissionView;
6-
import org.lowcoder.api.application.view.ApplicationView;
7-
import org.lowcoder.api.application.view.MarketplaceApplicationInfoView;
4+
import org.lowcoder.api.application.view.*;
85
import org.lowcoder.api.framework.view.PageResponseView;
96
import org.lowcoder.api.framework.view.ResponseView;
107
import org.lowcoder.api.home.SessionUserService;
@@ -132,9 +129,10 @@ public Mono<ResponseView<ApplicationView>> update(@PathVariable String applicati
132129
}
133130

134131
@Override
135-
public Mono<ResponseView<ApplicationView>> publish(@PathVariable String applicationId) {
132+
public Mono<ResponseView<ApplicationView>> publish(@PathVariable String applicationId,
133+
@RequestBody ApplicationPublishRequest applicationPublishRequest) {
136134
return gidService.convertApplicationIdToObjectId(applicationId).flatMap(appId ->
137-
applicationApiService.publish(appId)
135+
applicationApiService.publish(appId, applicationPublishRequest)
138136
.map(ResponseView::success));
139137
}
140138

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationEndpoints.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
import io.swagger.v3.oas.annotations.Operation;
55
import jakarta.annotation.Nullable;
66
import org.apache.commons.lang3.BooleanUtils;
7-
import org.lowcoder.api.application.view.ApplicationInfoView;
8-
import org.lowcoder.api.application.view.ApplicationPermissionView;
9-
import org.lowcoder.api.application.view.ApplicationView;
10-
import org.lowcoder.api.application.view.MarketplaceApplicationInfoView;
7+
import org.lowcoder.api.application.view.*;
118
import org.lowcoder.api.framework.view.ResponseView;
129
import org.lowcoder.api.home.UserHomepageView;
10+
import org.lowcoder.api.query.view.LibraryQueryPublishRequest;
1311
import org.lowcoder.domain.application.model.Application;
1412
import org.lowcoder.domain.application.model.ApplicationStatus;
1513
import org.lowcoder.infra.constant.NewUrl;
@@ -135,7 +133,8 @@ public Mono<ResponseView<ApplicationView>> update(@PathVariable String applicati
135133
description = "Set a Lowcoder Application identified by its ID as available to all selected Users or User-Groups. This is similar to the classic deployment. The Lowcoder Apps gets published in production mode."
136134
)
137135
@PostMapping("/{applicationId}/publish")
138-
public Mono<ResponseView<ApplicationView>> publish(@PathVariable String applicationId);
136+
public Mono<ResponseView<ApplicationView>> publish(@PathVariable String applicationId,
137+
@RequestBody ApplicationPublishRequest applicationPublishRequest);
139138

140139
@Operation(
141140
tags = TAG_APPLICATION_MANAGEMENT,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package org.lowcoder.api.application.view;
2+
3+
public record ApplicationPublishRequest(String commitMessage, String tag) {
4+
5+
}

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.junit.jupiter.api.TestInstance;
99
import org.lowcoder.api.application.ApplicationEndpoints.CreateApplicationRequest;
1010
import org.lowcoder.api.application.view.ApplicationPermissionView;
11+
import org.lowcoder.api.application.view.ApplicationPublishRequest;
1112
import org.lowcoder.api.application.view.ApplicationView;
1213
import org.lowcoder.api.common.InitData;
1314
import org.lowcoder.api.common.mockuser.WithMockUser;
@@ -152,7 +153,7 @@ public void testPublishApplication() {
152153

153154
// publish
154155
applicationIdMono = applicationIdMono
155-
.delayUntil(id -> applicationApiService.publish(id));
156+
.delayUntil(id -> applicationApiService.publish(id, new ApplicationPublishRequest("Test Publish", "1.0.0")));
156157

157158
// edit dsl after publish
158159
StepVerifier.create(applicationIdMono.flatMap(id -> applicationApiService.getEditingApplication(id)))

0 commit comments

Comments
 (0)