diff --git a/app/server/src/main/java/com/appsmith/server/constants/Url.java b/app/server/src/main/java/com/appsmith/server/constants/Url.java index ccf40b66bd..2df17b743f 100644 --- a/app/server/src/main/java/com/appsmith/server/constants/Url.java +++ b/app/server/src/main/java/com/appsmith/server/constants/Url.java @@ -12,4 +12,5 @@ public interface Url { String RESOURCE_URL = BASE_URL + VERSION + "/resources"; String ACTION_URL = BASE_URL + VERSION + "/actions"; String USER_URL = BASE_URL + VERSION + "/users"; + String APPLICATION_URL = BASE_URL + VERSION + "/applications"; } diff --git a/app/server/src/main/java/com/appsmith/server/controllers/ApplicationController.java b/app/server/src/main/java/com/appsmith/server/controllers/ApplicationController.java new file mode 100644 index 0000000000..d3e7333bf8 --- /dev/null +++ b/app/server/src/main/java/com/appsmith/server/controllers/ApplicationController.java @@ -0,0 +1,17 @@ +package com.appsmith.server.controllers; + +import com.appsmith.server.constants.Url; +import com.appsmith.server.domains.Application; +import com.appsmith.server.services.ApplicationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(Url.APPLICATION_URL) +public class ApplicationController extends BaseController { + @Autowired + public ApplicationController(ApplicationService service) { + super(service); + } +} diff --git a/app/server/src/main/java/com/appsmith/server/domains/Application.java b/app/server/src/main/java/com/appsmith/server/domains/Application.java new file mode 100644 index 0000000000..9c4210b1df --- /dev/null +++ b/app/server/src/main/java/com/appsmith/server/domains/Application.java @@ -0,0 +1,25 @@ +package com.appsmith.server.domains; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import org.springframework.data.mongodb.core.mapping.Document; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Getter +@Setter +@ToString +@NoArgsConstructor +@Document +public class Application extends BaseDomain { + + @NotNull + String name; + + String organizationId; + + List pages; +} diff --git a/app/server/src/main/java/com/appsmith/server/domains/ApplicationPage.java b/app/server/src/main/java/com/appsmith/server/domains/ApplicationPage.java new file mode 100644 index 0000000000..1351e0a693 --- /dev/null +++ b/app/server/src/main/java/com/appsmith/server/domains/ApplicationPage.java @@ -0,0 +1,19 @@ +package com.appsmith.server.domains; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +@NoArgsConstructor +public class ApplicationPage { + + String id; + + String name; + + Boolean isDefault; +} diff --git a/app/server/src/main/java/com/appsmith/server/domains/Layout.java b/app/server/src/main/java/com/appsmith/server/domains/Layout.java index a42efb8770..c205c91a34 100644 --- a/app/server/src/main/java/com/appsmith/server/domains/Layout.java +++ b/app/server/src/main/java/com/appsmith/server/domains/Layout.java @@ -5,14 +5,14 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; import net.minidev.json.JSONObject; -import org.springframework.data.mongodb.core.mapping.Document; @Getter @Setter @ToString @NoArgsConstructor -@Document public class Layout extends BaseDomain { + ScreenType screen; + JSONObject data; } diff --git a/app/server/src/main/java/com/appsmith/server/domains/Page.java b/app/server/src/main/java/com/appsmith/server/domains/Page.java new file mode 100644 index 0000000000..47bfcffae7 --- /dev/null +++ b/app/server/src/main/java/com/appsmith/server/domains/Page.java @@ -0,0 +1,22 @@ +package com.appsmith.server.domains; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.List; + +@Getter +@Setter +@ToString +@NoArgsConstructor +@Document +public class Page extends BaseDomain { + String name; + + String applicationId; + + List layouts; +} diff --git a/app/server/src/main/java/com/appsmith/server/domains/ScreenType.java b/app/server/src/main/java/com/appsmith/server/domains/ScreenType.java new file mode 100644 index 0000000000..e32735a7c3 --- /dev/null +++ b/app/server/src/main/java/com/appsmith/server/domains/ScreenType.java @@ -0,0 +1,5 @@ +package com.appsmith.server.domains; + +public enum ScreenType { + DESKTOP, MOBILE +} diff --git a/app/server/src/main/java/com/appsmith/server/repositories/ApplicationRepository.java b/app/server/src/main/java/com/appsmith/server/repositories/ApplicationRepository.java new file mode 100644 index 0000000000..b8ccb16812 --- /dev/null +++ b/app/server/src/main/java/com/appsmith/server/repositories/ApplicationRepository.java @@ -0,0 +1,8 @@ +package com.appsmith.server.repositories; + +import com.appsmith.server.domains.Application; +import org.springframework.stereotype.Repository; + +@Repository +public interface ApplicationRepository extends BaseRepository { +} diff --git a/app/server/src/main/java/com/appsmith/server/services/ApplicationService.java b/app/server/src/main/java/com/appsmith/server/services/ApplicationService.java new file mode 100644 index 0000000000..edb2b719be --- /dev/null +++ b/app/server/src/main/java/com/appsmith/server/services/ApplicationService.java @@ -0,0 +1,6 @@ +package com.appsmith.server.services; + +import com.appsmith.server.domains.Application; + +public interface ApplicationService extends CrudService { +} diff --git a/app/server/src/main/java/com/appsmith/server/services/ApplicationServiceImpl.java b/app/server/src/main/java/com/appsmith/server/services/ApplicationServiceImpl.java new file mode 100644 index 0000000000..ffd4c1c403 --- /dev/null +++ b/app/server/src/main/java/com/appsmith/server/services/ApplicationServiceImpl.java @@ -0,0 +1,40 @@ +package com.appsmith.server.services; + +import com.appsmith.server.domains.Application; +import com.appsmith.server.domains.User; +import com.appsmith.server.repositories.ApplicationRepository; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.ReactiveMongoTemplate; +import org.springframework.data.mongodb.core.convert.MongoConverter; +import org.springframework.stereotype.Service; +import reactor.core.publisher.Mono; +import reactor.core.scheduler.Scheduler; + +import javax.validation.Validator; + +@Slf4j +@Service +public class ApplicationServiceImpl extends BaseService implements ApplicationService { + + private final UserService userService; + + @Autowired + public ApplicationServiceImpl(Scheduler scheduler, Validator validator, MongoConverter mongoConverter, ReactiveMongoTemplate reactiveMongoTemplate, ApplicationRepository repository, UserService userService) { + super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository); + this.userService = userService; + } + + @Override + public Mono create(Application application) { + Mono userMono = userService.getCurrentUser(); + + return userMono + .map(user -> user.getOrganizationId()) + .map(orgId -> { + application.setOrganizationId(orgId); + return application; + }) + .flatMap(repository::save); + } +}