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 84d0264e6..3e15e9aa9 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 @@ -47,6 +47,7 @@ public class Application extends HasIdAndAuditing { private Integer applicationType; private ApplicationStatus applicationStatus; + @Setter private Map editingApplicationDSL; @Setter diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/repository/BundleRepository.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/repository/BundleRepository.java index 70180fb06..9670cc525 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/repository/BundleRepository.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/repository/BundleRepository.java @@ -13,6 +13,7 @@ public interface BundleRepository extends ReactiveMongoRepository { Mono deleteAllByGid(Collection gids); Flux findByGid(@Nonnull String gid); + Flux findAllByGid(Collection gids); Flux findByCreatedBy(String userId); /** diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleService.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleService.java index 646d2eff1..5518d82fd 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleService.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleService.java @@ -16,6 +16,7 @@ public interface BundleService { Mono updateById(String id, Bundle resource); Mono findById(String id); + Flux findByIdIn(Collection ids); Mono findByIdWithoutDsl(String id); diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleServiceImpl.java index 611f74d4c..48550aec3 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleServiceImpl.java @@ -20,6 +20,7 @@ import java.util.Collection; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -56,6 +57,15 @@ public Mono findById(String id) { .switchIfEmpty(Mono.error(new BizException(BizError.NO_RESOURCE_FOUND, "BUNDLE_NOT_FOUND", id))); } + @Override + public Flux findByIdIn(Collection ids) { + Optional first = ids.stream().findFirst(); + if(first.isPresent() && FieldName.isGID(first.get())) + return repository.findAllByGid(ids); + + return repository.findAllById(ids); + } + @Override public Mono findByIdWithoutDsl(String id) { if (id == null) { diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/repository/DatasourceRepository.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/repository/DatasourceRepository.java index 71e6eca55..351e3be48 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/repository/DatasourceRepository.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/repository/DatasourceRepository.java @@ -62,6 +62,15 @@ public Mono findById(String datasourceId) { .flatMap(this::convertToDomainObjectAndDecrypt); } + public Flux findByIds(Collection datasourceIds) { + Optional first = datasourceIds.stream().findAny(); + if(first.isPresent() && FieldName.isGID(first.get())) + return repository.findAllByGidIn(datasourceIds) + .flatMap(this::convertToDomainObjectAndDecrypt); + return repository.findAllById(datasourceIds) + .flatMap(this::convertToDomainObjectAndDecrypt); + } + public Mono findWorkspacePredefinedDatasourceByOrgIdAndType(String organizationId, String type) { return repository.findByOrganizationIdAndTypeAndCreationSource(organizationId, type, DatasourceCreationSource.LEGACY_WORKSPACE_PREDEFINED.getValue()) diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/service/DatasourceService.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/service/DatasourceService.java index 8f25eab8e..ccb1e2219 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/service/DatasourceService.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/service/DatasourceService.java @@ -15,6 +15,7 @@ public interface DatasourceService { Mono update(String id, Datasource resource); Mono getById(String id); + Flux getByIds(Collection ids); Mono delete(String id); diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/service/impl/DatasourceServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/service/impl/DatasourceServiceImpl.java index cd488cd10..52914c4cd 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/service/impl/DatasourceServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/datasource/service/impl/DatasourceServiceImpl.java @@ -101,6 +101,32 @@ public Mono getById(String id) { return repository.findById(id); } + @Override + public Flux getByIds(Collection ids) { + Flux builtDatasourceFlux = Flux.fromStream(ids.stream().filter(id-> StringUtils.equals(id, Datasource.QUICK_REST_API_ID) + || StringUtils.equals(id, Datasource.QUICK_GRAPHQL_ID) + || StringUtils.equals(id, Datasource.LOWCODER_API_ID) + ).map(id-> { + if (StringUtils.equals(id, Datasource.QUICK_REST_API_ID)) { + return Datasource.QUICK_REST_API; + } + + if (StringUtils.equals(id, Datasource.QUICK_GRAPHQL_ID)) { + return Datasource.QUICK_GRAPHQL_API; + } + + if (StringUtils.equals(id, Datasource.LOWCODER_API_ID)) { + return Datasource.LOWCODER_API; + } + return Datasource.LOWCODER_API; + })); + + return Flux.concat(builtDatasourceFlux, repository.findByIds(ids.stream().filter(id-> !(StringUtils.equals(id, Datasource.QUICK_REST_API_ID) + || StringUtils.equals(id, Datasource.QUICK_GRAPHQL_ID) + || StringUtils.equals(id, Datasource.LOWCODER_API_ID)) + ).toList())); + } + private Mono validateDatasource(Datasource datasource) { if (datasource.getOrganizationId() == null) { diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/repository/FolderRepository.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/repository/FolderRepository.java index aa6734af7..9be68ed63 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/repository/FolderRepository.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/repository/FolderRepository.java @@ -14,5 +14,6 @@ public interface FolderRepository extends ReactiveMongoRepository findByOrganizationId(String organizationId); Flux findByGid(String organizationGid); + Flux findByGidIn(Collection ids); Mono deleteAllByGid(Collection gids); } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/service/FolderService.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/service/FolderService.java index 1ac2d5e6f..1b17507c6 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/service/FolderService.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/service/FolderService.java @@ -11,6 +11,8 @@ public interface FolderService { Mono findById(String id); + Flux findByIds(Collection ids); + Mono create(Folder folder); Flux findByOrganizationId(String organizationId); diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/service/FolderServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/service/FolderServiceImpl.java index f297de101..27157f516 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/service/FolderServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/folder/service/FolderServiceImpl.java @@ -1,5 +1,6 @@ package org.lowcoder.domain.folder.service; +import static org.lowcoder.domain.organization.model.OrganizationState.ACTIVE; import static org.lowcoder.sdk.exception.BizError.NO_RESOURCE_FOUND; import java.util.Collection; @@ -46,6 +47,13 @@ public Mono findById(String id) { .switchIfEmpty(Mono.error(new BizException(BizError.NO_RESOURCE_FOUND, "FOLDER_NOT_FOUND", id))); } + @Override + public Flux findByIds(Collection ids) { + if(!ids.isEmpty() && FieldName.isGID(ids.stream().findFirst().get())) + return repository.findByGidIn(ids); + return repository.findAllById(ids); + } + @Override public Mono create(Folder folder) { return repository.save(folder); diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/repository/LibraryQueryRepository.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/repository/LibraryQueryRepository.java index 41cdca0c5..17cb8fe71 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/repository/LibraryQueryRepository.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/repository/LibraryQueryRepository.java @@ -6,6 +6,8 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import java.util.Collection; + @Repository public interface LibraryQueryRepository extends ReactiveMongoRepository { @@ -14,4 +16,5 @@ public interface LibraryQueryRepository extends ReactiveMongoRepository findByName(String name); Mono deleteByGid(String gid); Flux findByGid(String gid); + Flux findByGidIn(Collection gids); } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/LibraryQueryService.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/LibraryQueryService.java index 2f1193d9f..618377300 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/LibraryQueryService.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/LibraryQueryService.java @@ -5,10 +5,12 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import java.util.Collection; import java.util.Map; public interface LibraryQueryService { Mono getById(String libraryQueryId); + Flux getByIds(Collection libraryQueryIds); Mono getByName(String libraryQueryName); diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/LibraryQueryServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/LibraryQueryServiceImpl.java index 67595dd04..fbd175ecf 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/LibraryQueryServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/LibraryQueryServiceImpl.java @@ -13,7 +13,9 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import java.util.Collection; import java.util.Map; +import java.util.Optional; import static org.lowcoder.sdk.exception.BizError.LIBRARY_QUERY_NOT_FOUND; import static org.lowcoder.sdk.util.ExceptionUtils.deferredError; @@ -35,6 +37,14 @@ public Mono getById(String libraryQueryId) { .switchIfEmpty(deferredError(LIBRARY_QUERY_NOT_FOUND, "LIBRARY_QUERY_NOT_FOUND")); } + @Override + public Flux getByIds(Collection libraryQueryIds) { + Optional first = libraryQueryIds.stream().findFirst(); + if(first.isPresent() && FieldName.isGID(first.get())) + return libraryQueryRepository.findByGidIn(libraryQueryIds); + return libraryQueryRepository.findAllById(libraryQueryIds); + } + @Override public Mono getByName(String libraryQueryName) { return libraryQueryRepository.findByName(libraryQueryName) diff --git a/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/constant/NewUrl.java b/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/constant/NewUrl.java index ba5d39975..5f14ca234 100644 --- a/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/constant/NewUrl.java +++ b/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/constant/NewUrl.java @@ -37,4 +37,5 @@ private NewUrl() { public static final String NPM_REGISTRY = PREFIX + "/npm"; public static final String PLUGINS_URL = PREFIX + "/plugins"; + public static final String META_URL = PREFIX + "/meta"; } diff --git a/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/constant/Url.java b/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/constant/Url.java index 8ec972167..985f90ec7 100644 --- a/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/constant/Url.java +++ b/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/constant/Url.java @@ -17,5 +17,6 @@ public final class Url { public static final String APPLICATION_URL = BASE_URL + VERSION + "/applications"; public static final String QUERY_URL = BASE_URL + VERSION + "/query"; public static final String STATE_URL = BASE_URL + VERSION + "/state"; + public static final String META_URL = BASE_URL + VERSION + "/meta"; } diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/MetaController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/MetaController.java new file mode 100644 index 000000000..90e63f0b0 --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/MetaController.java @@ -0,0 +1,75 @@ +package org.lowcoder.api.meta; + +import lombok.RequiredArgsConstructor; +import org.lowcoder.api.application.ApplicationApiService; +import org.lowcoder.api.framework.view.ResponseView; +import org.lowcoder.api.meta.view.*; +import org.lowcoder.domain.application.model.Application; +import org.lowcoder.domain.application.service.ApplicationRecordService; +import org.lowcoder.domain.application.service.ApplicationServiceImpl; +import org.lowcoder.domain.bundle.model.Bundle; +import org.lowcoder.domain.bundle.service.BundleServiceImpl; +import org.lowcoder.domain.datasource.model.Datasource; +import org.lowcoder.domain.datasource.service.impl.DatasourceServiceImpl; +import org.lowcoder.domain.folder.model.Folder; +import org.lowcoder.domain.folder.service.FolderServiceImpl; +import org.lowcoder.domain.group.model.Group; +import org.lowcoder.domain.group.service.GroupServiceImpl; +import org.lowcoder.domain.organization.model.Organization; +import org.lowcoder.domain.organization.service.OrganizationServiceImpl; +import org.lowcoder.domain.query.model.LibraryQuery; +import org.lowcoder.domain.query.service.LibraryQueryServiceImpl; +import org.lowcoder.domain.user.model.User; +import org.lowcoder.domain.user.service.UserServiceImpl; +import org.lowcoder.sdk.util.LocaleUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +@RequiredArgsConstructor +@RestController +public class MetaController implements MetaEndpoints { + private final ApplicationApiService applicationApiService; + private final ApplicationServiceImpl applicationServiceImpl; + private final UserServiceImpl userServiceImpl; + private final OrganizationServiceImpl organizationServiceImpl; + private final FolderServiceImpl folderServiceImpl; + private final DatasourceServiceImpl datasourceServiceImpl; + private final BundleServiceImpl bundleServiceImpl; + private final GroupServiceImpl groupServiceImpl; + private final LibraryQueryServiceImpl libraryQueryServiceImpl; + private final ApplicationRecordService applicationRecordService; + + @Override + public Mono> getMetaData(@RequestBody GetMetaDataRequest param) { + Flux appsFlux = applicationServiceImpl.findByIdIn(param.appIds()).flatMap(app -> ApplicationMetaView.of(app, applicationRecordService)); + Flux usersFlux = userServiceImpl.getByIds(param.userIds()).flatMapMany(map -> Flux.fromIterable(map.values())).map(UserMetaView::of); + Flux orgsFlux = organizationServiceImpl.getByIds(param.orgIds()).map(OrgMetaView::of); + Flux foldersFlux = folderServiceImpl.findByIds(param.folderIds()).map(FolderMetaView::of); + Flux datasourcesFlux = datasourceServiceImpl.getByIds(param.datasourceIds()).map(DatasourceMetaView::of); + Flux bundlesFlux = bundleServiceImpl.findByIdIn(param.bundleIds()).map(BundleMetaView::of); + Flux groupsFlux = Flux.deferContextual(contextView -> groupServiceImpl.getByIds(param.groupIds()).map(group -> GroupMetaView.of(group, LocaleUtils.getLocale(contextView)))); + Flux queriesFlux = libraryQueryServiceImpl.getByIds(param.libraryQueryIds()).map(LibraryQueryMetaView::of); + return Mono.zip( + appsFlux.collectList(), + usersFlux.collectList(), + orgsFlux.collectList(), + foldersFlux.collectList(), + datasourcesFlux.collectList(), + bundlesFlux.collectList(), + groupsFlux.collectList(), + queriesFlux.collectList() + ).map(tuple -> MetaView.builder() + .apps(tuple.getT1()) + .users(tuple.getT2()) + .orgs(tuple.getT3()) + .folders(tuple.getT4()) + .datasources(tuple.getT5()) + .bundles(tuple.getT6()) + .groups(tuple.getT7()) + .queries(tuple.getT8()) + .build()) + .map(ResponseView::success); + } +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/MetaEndpoints.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/MetaEndpoints.java new file mode 100644 index 000000000..ba6affa40 --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/MetaEndpoints.java @@ -0,0 +1,36 @@ +package org.lowcoder.api.meta; + +import io.swagger.v3.oas.annotations.Operation; +import org.lowcoder.api.framework.view.ResponseView; +import org.lowcoder.api.meta.view.MetaView; +import org.lowcoder.infra.constant.NewUrl; +import org.lowcoder.infra.constant.Url; +import org.springframework.web.bind.annotation.*; +import reactor.core.publisher.Mono; + +import java.util.List; + +@RestController +@RequestMapping(value = {Url.META_URL, NewUrl.META_URL}) +public interface MetaEndpoints +{ + public static final String TAG_META_MANAGEMENT = "Meta APIs"; + + @Operation( + tags = TAG_META_MANAGEMENT, + operationId = "getMetaData", + summary = "Get metadata by ids", + description = "Get all metadatas by ids" + ) + @PostMapping("/") + public Mono> getMetaData(@RequestBody GetMetaDataRequest param); + + public record GetMetaDataRequest(List appIds, + List orgIds, + List userIds, + List groupIds, + List bundleIds, + List datasourceIds, + List folderIds, + List libraryQueryIds) {} +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/ApplicationMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/ApplicationMetaView.java new file mode 100644 index 000000000..55fed483d --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/ApplicationMetaView.java @@ -0,0 +1,33 @@ +package org.lowcoder.api.meta.view; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; +import org.lowcoder.domain.application.model.Application; +import org.lowcoder.domain.application.service.ApplicationRecordService; +import reactor.core.publisher.Mono; + +@SuperBuilder +@Getter +public class ApplicationMetaView { + private String id; + private String name; + private String title; + private String description; + private String category; + private String icon; + + public static Mono of(Application app, ApplicationRecordService applicationRecordService) { + return Mono.zip(app.getTitle(applicationRecordService), + app.getDescription(applicationRecordService), + app.getCategory(applicationRecordService), + app.getIcon(applicationRecordService)).map(tuple -> + ApplicationMetaView.builder() + .id(app.getId()) + .name(app.getName()) + .title(tuple.getT1()) + .description(tuple.getT2()) + .category(tuple.getT3()) + .icon(tuple.getT4()) + .build()); + } +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/BundleMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/BundleMetaView.java new file mode 100644 index 000000000..41bc381db --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/BundleMetaView.java @@ -0,0 +1,19 @@ +package org.lowcoder.api.meta.view; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; +import org.lowcoder.domain.bundle.model.Bundle; + +@SuperBuilder +@Getter +public class BundleMetaView { + private String id; + private String name; + + public static BundleMetaView of(Bundle bundle) { + return BundleMetaView.builder() + .id(bundle.getId()) + .name(bundle.getName()) + .build(); + } +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/DatasourceMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/DatasourceMetaView.java new file mode 100644 index 000000000..353da271a --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/DatasourceMetaView.java @@ -0,0 +1,19 @@ +package org.lowcoder.api.meta.view; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; +import org.lowcoder.domain.datasource.model.Datasource; + +@SuperBuilder +@Getter +public class DatasourceMetaView { + private String id; + private String name; + + public static DatasourceMetaView of(Datasource datasource) { + return DatasourceMetaView.builder() + .id(datasource.getId()) + .name(datasource.getName()) + .build(); + } +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/FolderMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/FolderMetaView.java new file mode 100644 index 000000000..863634eaa --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/FolderMetaView.java @@ -0,0 +1,19 @@ +package org.lowcoder.api.meta.view; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; +import org.lowcoder.domain.folder.model.Folder; + +@SuperBuilder +@Getter +public class FolderMetaView { + private String id; + private String name; + + public static FolderMetaView of(Folder folder) { + return FolderMetaView.builder() + .id(folder.getId()) + .name(folder.getName()) + .build(); + } +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/GroupMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/GroupMetaView.java new file mode 100644 index 000000000..37951e54b --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/GroupMetaView.java @@ -0,0 +1,21 @@ +package org.lowcoder.api.meta.view; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; +import org.lowcoder.domain.group.model.Group; + +import java.util.Locale; + +@SuperBuilder +@Getter +public class GroupMetaView { + private String id; + private String name; + + public static GroupMetaView of(Group group, Locale locale) { + return GroupMetaView.builder() + .id(group.getId()) + .name(group.getName(locale)) + .build(); + } +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/LibraryQueryMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/LibraryQueryMetaView.java new file mode 100644 index 000000000..2b3a2b36f --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/LibraryQueryMetaView.java @@ -0,0 +1,19 @@ +package org.lowcoder.api.meta.view; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; +import org.lowcoder.domain.query.model.LibraryQuery; + +@SuperBuilder +@Getter +public class LibraryQueryMetaView { + private String id; + private String name; + + public static LibraryQueryMetaView of(LibraryQuery libraryQuery) { + return LibraryQueryMetaView.builder() + .id(libraryQuery.getId()) + .name(libraryQuery.getName()) + .build(); + } +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/MetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/MetaView.java new file mode 100644 index 000000000..cc21b5ed8 --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/MetaView.java @@ -0,0 +1,19 @@ +package org.lowcoder.api.meta.view; + +import lombok.Builder; +import lombok.Getter; + +import java.util.List; + +@Builder +@Getter +public class MetaView { + private final List apps; + private final List users; + private final List orgs; + private final List folders; + private final List datasources; + private final List bundles; + private final List groups; + private final List queries; +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/OrgMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/OrgMetaView.java new file mode 100644 index 000000000..8842efea6 --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/OrgMetaView.java @@ -0,0 +1,19 @@ +package org.lowcoder.api.meta.view; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; +import org.lowcoder.domain.organization.model.Organization; + +@SuperBuilder +@Getter +public class OrgMetaView { + private String id; + private String name; + + public static OrgMetaView of(Organization user) { + return OrgMetaView.builder() + .id(user.getId()) + .name(user.getName()) + .build(); + } +} diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/UserMetaView.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/UserMetaView.java new file mode 100644 index 000000000..d9d462cd0 --- /dev/null +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/meta/view/UserMetaView.java @@ -0,0 +1,21 @@ +package org.lowcoder.api.meta.view; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; +import org.lowcoder.domain.user.model.User; + +@SuperBuilder +@Getter +public class UserMetaView { + private String id; + private String name; + private String email; + + public static UserMetaView of(User user) { + return UserMetaView.builder() + .id(user.getId()) + .name(user.getName()) + .email(user.getEmail()) + .build(); + } +}