Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,15 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java</artifactId>
<version>22.3</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>

<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
Expand Down
49 changes: 42 additions & 7 deletions src/main/java/tech/wetech/flexmodel/api/ApiLogResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
import tech.wetech.flexmodel.codegen.entity.ApiLog;
import tech.wetech.flexmodel.domain.model.api.LogStat;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Set;

/**
* @author cjbi
Expand All @@ -21,16 +24,48 @@ public class ApiLogResource {
ApiLogApplicationService apiLogApplicationService;

@GET
public List<ApiLog> findApiList(@QueryParam("current" ) @DefaultValue("1" ) int current,
@QueryParam("pageSize" ) @DefaultValue("50" ) int pageSize,
@QueryParam("filter" ) String filter) {
return apiLogApplicationService.findApiLogs(filter, current, pageSize);
public List<ApiLog> findApiList(@QueryParam("current") @DefaultValue("1") int current,
@QueryParam("pageSize") @DefaultValue("50") int pageSize,
@QueryParam("keyword") String keyword,
@QueryParam("dateRange") String dateRange,
@QueryParam("level") String levelStr
) {
RequestResult result = parseQuery(dateRange, levelStr);
return apiLogApplicationService.findApiLogs(current, pageSize, keyword, result.startDate(), result.endDate(), result.level());
}

@GET
@Path("/stat" )
public List<LogStat> stat(@QueryParam("filter" ) String filter) {
return apiLogApplicationService.stat(filter);
@Path("/stat")
public List<LogStat> stat(@QueryParam("pageSize") @DefaultValue("50") int pageSize,
@QueryParam("keyword") String keyword,
@QueryParam("dateRange") String dateRange,
@QueryParam("level") String levelStr) {
RequestResult result = parseQuery(dateRange, levelStr);
return apiLogApplicationService.stat(keyword, result.startDate(), result.endDate(), result.level());
}

private static RequestResult parseQuery(String dateRange, String levelStr) {
LocalDateTime startDate = null;
LocalDateTime endDate = null;
Set<String> level = null;
if (dateRange != null) {
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String[] dateRangeArr = dateRange.split(",");
startDate = LocalDateTime.parse(dateRangeArr[0], formatter);
endDate = LocalDateTime.parse(dateRangeArr[1], formatter);
} catch (Exception e) {
startDate = null;
endDate = null;
}
}
if (levelStr != null) {
level = Set.of(levelStr.split(","));
}
return new RequestResult(startDate, endDate, level);
}

private record RequestResult(LocalDateTime startDate, LocalDateTime endDate, Set<String> level) {
}

}
30 changes: 22 additions & 8 deletions src/main/java/tech/wetech/flexmodel/api/DatasourceResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import jakarta.inject.Inject;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import tech.wetech.flexmodel.Entity;
Expand All @@ -12,10 +13,7 @@
import tech.wetech.flexmodel.domain.model.connect.database.Database;
import tech.wetech.flexmodel.util.JsonUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;

/**
* @author cjbi
Expand All @@ -37,10 +35,22 @@ public ValidateResult validateConnection(Datasource datasource) {
return modelingApplicationService.validateConnection(datasource);
}

@GET
@Path("/{datasourceName}/refresh")
public List<Entity> refresh(@PathParam("datasourceName") String datasourceName) {
return modelingApplicationService.refresh(datasourceName);
@POST
@Path("/{datasourceName}/sync")
public List<Entity> syncModels(@PathParam("datasourceName") String datasourceName, Set<String> models) {
return modelingApplicationService.syncModels(datasourceName, models);
}

@POST
@Path("/{datasourceName}/import")
public void importModels(@PathParam("datasourceName") String datasourceName, @Valid ImportScriptRequest request) {
modelingApplicationService.importModels(datasourceName, request.script());
}

@POST
@Path("/physics/names")
public List<String> getPhysicsModelNames(Datasource datasource) {
return modelingApplicationService.getPhysicsModelNames(datasource);
}

@GET
Expand Down Expand Up @@ -80,4 +90,8 @@ public void deleteDatasource(@PathParam("datasourceName") String datasourceName)
modelingApplicationService.deleteDatasource(datasourceName);
}

public record ImportScriptRequest(@NotBlank String script) {

}

}
51 changes: 0 additions & 51 deletions src/main/java/tech/wetech/flexmodel/api/SettingResource.java

This file was deleted.

30 changes: 30 additions & 0 deletions src/main/java/tech/wetech/flexmodel/api/SettingsResource.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package tech.wetech.flexmodel.api;

import jakarta.inject.Inject;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import tech.wetech.flexmodel.application.SettingsApplicationService;
import tech.wetech.flexmodel.domain.model.settings.Settings;

/**
* @author cjbi
*/
@Path("/api/settings")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class SettingsResource {

@Inject
SettingsApplicationService settingsApplicationService;

@GET
public Object getSettings() {
return settingsApplicationService.getSettings();
}

@PATCH
public Object saveSettings(Settings settings) {
return settingsApplicationService.saveSettings(settings);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import tech.wetech.flexmodel.codegen.entity.ApiLog;
import tech.wetech.flexmodel.criterion.Example;
import tech.wetech.flexmodel.domain.model.api.ApiLogService;
import tech.wetech.flexmodel.domain.model.api.LogStat;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

/**
* @author cjbi
Expand All @@ -17,11 +20,26 @@ public class ApiLogApplicationService {
@Inject
ApiLogService apiLogService;

public List<ApiLog> findApiLogs(String filter, int current, int pageSize) {
return apiLogService.find(filter, current, pageSize);
public List<ApiLog> findApiLogs(int current, int pageSize, String keyword, LocalDateTime startDate, LocalDateTime endDate, Set<String> level) {

return apiLogService.find(f -> getCriteria(keyword, startDate, endDate, level, f), current, pageSize);
}

public List<LogStat> stat(String keyword, LocalDateTime startDate, LocalDateTime endDate, Set<String> level) {
return apiLogService.stat(f -> getCriteria(keyword, startDate, endDate, level, f));
}
public List<LogStat> stat(String filter) {
return apiLogService.stat(filter);

private static Example.Criteria getCriteria(String keyword, LocalDateTime startDate, LocalDateTime endDate, Set<String> level, Example.Criteria f) {
if (keyword != null) {
f.contains("data", keyword);
}
if (startDate != null && endDate != null) {
f.between("createdAt", startDate, endDate);
}
if (level != null) {
f.in("level", level);
}
return f;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,9 @@ public class DocumentApplicationService {
static {
TYPE_MAPPING.put("ID", Map.of("type", "string"));
TYPE_MAPPING.put("String", Map.of("type", "string"));
TYPE_MAPPING.put("Text", Map.of("type", "string"));
TYPE_MAPPING.put("Int", Map.of("type", "integer", "format", "int32"));
TYPE_MAPPING.put("Long", Map.of("type", "integer", "format", "int64"));
TYPE_MAPPING.put("Float", Map.of("type", "number", "format", "double"));
TYPE_MAPPING.put("Boolean", Map.of("type", "boolean"));
// typeMapping.put("", Map.of("type", "array"));
TYPE_MAPPING.put("JSON", Map.of("type", "object"));
}

Expand All @@ -72,7 +69,7 @@ private Map<String, String> buildInfo() {
return Map.of(
"title", "Flexmodel API document",
"description", """
Learn how to interact with Flexmodel programmatically
Interact with Flexmodel programmatically
"""
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ public List<IdentityProvider> findAll() {
}

public IdentityProvider createProvider(IdentityProvider identityProvider) {
return identityProviderService.save(identityProvider);
return identityProviderService.create(identityProvider);
}

public IdentityProvider updateProvider(IdentityProvider identityProvider) {
return identityProviderService.save(identityProvider);
return identityProviderService.update(identityProvider);
}

public void deleteProvider(String id) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import tech.wetech.flexmodel.domain.model.modeling.ModelService;

import java.util.List;
import java.util.Set;

/**
* @author cjbi
Expand Down Expand Up @@ -76,13 +77,19 @@ public void dropIndex(String datasourceName, String modelName, String indexName)
modelService.dropIndex(datasourceName, modelName, indexName);
}

public List<Entity> refresh(String datasourceName) {
return modelService.refresh(datasourceName);
}

public ValidateResult validateConnection(Datasource datasource) {
return datasourceService.validate(datasource);
}

public List<String> getPhysicsModelNames(Datasource datasource) {
return datasourceService.getPhysicsModelNames(datasource);
}

public List<Entity> syncModels(String datasourceName, Set<String> models) {
return modelService.syncModels(datasourceName, models);
}

public void importModels(String datasourceName, String script) {
modelService.importModels(datasourceName, script);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package tech.wetech.flexmodel.application;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import tech.wetech.flexmodel.domain.model.settings.Settings;
import tech.wetech.flexmodel.domain.model.settings.SettingsService;

/**
* @author cjbi
*/
@ApplicationScoped
public class SettingsApplicationService {

@Inject
SettingsService settingsService;

public Settings getSettings() {
return settingsService.getSettings();
}

public Settings saveSettings(Settings settings) {
return settingsService.saveSettings(settings);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public interface ApiInfoRepository {

void deleteByParentId(String parentId);

ApiInfo findById(String id);

List<ApiInfo> findAll();

ApiInfo save(ApiInfo record);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ public ApiInfo create(ApiInfo apiInfo) {
}

public ApiInfo update(ApiInfo apiInfo) {
ApiInfo older = apiInfoRepository.findById(apiInfo.getId());
if (older == null) {
return apiInfo;
}
apiInfo.setCreatedAt(older.getCreatedAt());
apiInfo.setEnabled(older.getEnabled());
return apiInfoRepository.save(apiInfo);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
*/
public interface ApiLogRepository {

List<ApiLog> find(String filter, Integer current, Integer pageSize);
List<ApiLog> find(UnaryOperator<Example.Criteria> filter, Integer current, Integer pageSize);

List<LogStat> stat(String filter);
List<LogStat> stat(UnaryOperator<Example.Criteria> filter);

ApiLog save(ApiLog record);

Expand Down
Loading
Loading