Skip to content

Commit 3dd201a

Browse files
authored
Feat/graphql (#1)
* refactor: re
1 parent 19ad33c commit 3dd201a

35 files changed

+543
-180
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,15 @@
2828
<type>pom</type>
2929
<scope>import</scope>
3030
</dependency>
31+
<dependency>
32+
<groupId>com.graphql-java</groupId>
33+
<artifactId>graphql-java</artifactId>
34+
<version>22.3</version>
35+
</dependency>
3136
</dependencies>
3237
</dependencyManagement>
3338
<dependencies>
39+
3440
<dependency>
3541
<groupId>org.mongodb</groupId>
3642
<artifactId>mongodb-driver-sync</artifactId>

src/main/java/tech/wetech/flexmodel/api/ApiLogResource.java

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
import tech.wetech.flexmodel.codegen.entity.ApiLog;
88
import tech.wetech.flexmodel.domain.model.api.LogStat;
99

10+
import java.time.LocalDateTime;
11+
import java.time.format.DateTimeFormatter;
1012
import java.util.List;
13+
import java.util.Set;
1114

1215
/**
1316
* @author cjbi
@@ -21,16 +24,48 @@ public class ApiLogResource {
2124
ApiLogApplicationService apiLogApplicationService;
2225

2326
@GET
24-
public List<ApiLog> findApiList(@QueryParam("current" ) @DefaultValue("1" ) int current,
25-
@QueryParam("pageSize" ) @DefaultValue("50" ) int pageSize,
26-
@QueryParam("filter" ) String filter) {
27-
return apiLogApplicationService.findApiLogs(filter, current, pageSize);
27+
public List<ApiLog> findApiList(@QueryParam("current") @DefaultValue("1") int current,
28+
@QueryParam("pageSize") @DefaultValue("50") int pageSize,
29+
@QueryParam("keyword") String keyword,
30+
@QueryParam("dateRange") String dateRange,
31+
@QueryParam("level") String levelStr
32+
) {
33+
RequestResult result = parseQuery(dateRange, levelStr);
34+
return apiLogApplicationService.findApiLogs(current, pageSize, keyword, result.startDate(), result.endDate(), result.level());
2835
}
2936

3037
@GET
31-
@Path("/stat" )
32-
public List<LogStat> stat(@QueryParam("filter" ) String filter) {
33-
return apiLogApplicationService.stat(filter);
38+
@Path("/stat")
39+
public List<LogStat> stat(@QueryParam("pageSize") @DefaultValue("50") int pageSize,
40+
@QueryParam("keyword") String keyword,
41+
@QueryParam("dateRange") String dateRange,
42+
@QueryParam("level") String levelStr) {
43+
RequestResult result = parseQuery(dateRange, levelStr);
44+
return apiLogApplicationService.stat(keyword, result.startDate(), result.endDate(), result.level());
45+
}
46+
47+
private static RequestResult parseQuery(String dateRange, String levelStr) {
48+
LocalDateTime startDate = null;
49+
LocalDateTime endDate = null;
50+
Set<String> level = null;
51+
if (dateRange != null) {
52+
try {
53+
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
54+
String[] dateRangeArr = dateRange.split(",");
55+
startDate = LocalDateTime.parse(dateRangeArr[0], formatter);
56+
endDate = LocalDateTime.parse(dateRangeArr[1], formatter);
57+
} catch (Exception e) {
58+
startDate = null;
59+
endDate = null;
60+
}
61+
}
62+
if (levelStr != null) {
63+
level = Set.of(levelStr.split(","));
64+
}
65+
return new RequestResult(startDate, endDate, level);
66+
}
67+
68+
private record RequestResult(LocalDateTime startDate, LocalDateTime endDate, Set<String> level) {
3469
}
3570

3671
}

src/main/java/tech/wetech/flexmodel/api/DatasourceResource.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import jakarta.inject.Inject;
44
import jakarta.validation.Valid;
5+
import jakarta.validation.constraints.NotBlank;
56
import jakarta.ws.rs.*;
67
import jakarta.ws.rs.core.MediaType;
78
import tech.wetech.flexmodel.Entity;
@@ -12,10 +13,7 @@
1213
import tech.wetech.flexmodel.domain.model.connect.database.Database;
1314
import tech.wetech.flexmodel.util.JsonUtils;
1415

15-
import java.util.ArrayList;
16-
import java.util.HashMap;
17-
import java.util.List;
18-
import java.util.Map;
16+
import java.util.*;
1917

2018
/**
2119
* @author cjbi
@@ -37,10 +35,22 @@ public ValidateResult validateConnection(Datasource datasource) {
3735
return modelingApplicationService.validateConnection(datasource);
3836
}
3937

40-
@GET
41-
@Path("/{datasourceName}/refresh")
42-
public List<Entity> refresh(@PathParam("datasourceName") String datasourceName) {
43-
return modelingApplicationService.refresh(datasourceName);
38+
@POST
39+
@Path("/{datasourceName}/sync")
40+
public List<Entity> syncModels(@PathParam("datasourceName") String datasourceName, Set<String> models) {
41+
return modelingApplicationService.syncModels(datasourceName, models);
42+
}
43+
44+
@POST
45+
@Path("/{datasourceName}/import")
46+
public void importModels(@PathParam("datasourceName") String datasourceName, @Valid ImportScriptRequest request) {
47+
modelingApplicationService.importModels(datasourceName, request.script());
48+
}
49+
50+
@POST
51+
@Path("/physics/names")
52+
public List<String> getPhysicsModelNames(Datasource datasource) {
53+
return modelingApplicationService.getPhysicsModelNames(datasource);
4454
}
4555

4656
@GET
@@ -80,4 +90,8 @@ public void deleteDatasource(@PathParam("datasourceName") String datasourceName)
8090
modelingApplicationService.deleteDatasource(datasourceName);
8191
}
8292

93+
public record ImportScriptRequest(@NotBlank String script) {
94+
95+
}
96+
8397
}

src/main/java/tech/wetech/flexmodel/api/SettingResource.java

Lines changed: 0 additions & 51 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package tech.wetech.flexmodel.api;
2+
3+
import jakarta.inject.Inject;
4+
import jakarta.ws.rs.*;
5+
import jakarta.ws.rs.core.MediaType;
6+
import tech.wetech.flexmodel.application.SettingsApplicationService;
7+
import tech.wetech.flexmodel.domain.model.settings.Settings;
8+
9+
/**
10+
* @author cjbi
11+
*/
12+
@Path("/api/settings")
13+
@Produces(MediaType.APPLICATION_JSON)
14+
@Consumes(MediaType.APPLICATION_JSON)
15+
public class SettingsResource {
16+
17+
@Inject
18+
SettingsApplicationService settingsApplicationService;
19+
20+
@GET
21+
public Object getSettings() {
22+
return settingsApplicationService.getSettings();
23+
}
24+
25+
@PATCH
26+
public Object saveSettings(Settings settings) {
27+
return settingsApplicationService.saveSettings(settings);
28+
}
29+
30+
}

src/main/java/tech/wetech/flexmodel/application/ApiLogApplicationService.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import jakarta.enterprise.context.ApplicationScoped;
44
import jakarta.inject.Inject;
55
import tech.wetech.flexmodel.codegen.entity.ApiLog;
6+
import tech.wetech.flexmodel.criterion.Example;
67
import tech.wetech.flexmodel.domain.model.api.ApiLogService;
78
import tech.wetech.flexmodel.domain.model.api.LogStat;
89

10+
import java.time.LocalDateTime;
911
import java.util.List;
12+
import java.util.Set;
1013

1114
/**
1215
* @author cjbi
@@ -17,11 +20,26 @@ public class ApiLogApplicationService {
1720
@Inject
1821
ApiLogService apiLogService;
1922

20-
public List<ApiLog> findApiLogs(String filter, int current, int pageSize) {
21-
return apiLogService.find(filter, current, pageSize);
23+
public List<ApiLog> findApiLogs(int current, int pageSize, String keyword, LocalDateTime startDate, LocalDateTime endDate, Set<String> level) {
24+
25+
return apiLogService.find(f -> getCriteria(keyword, startDate, endDate, level, f), current, pageSize);
26+
}
27+
28+
public List<LogStat> stat(String keyword, LocalDateTime startDate, LocalDateTime endDate, Set<String> level) {
29+
return apiLogService.stat(f -> getCriteria(keyword, startDate, endDate, level, f));
2230
}
23-
public List<LogStat> stat(String filter) {
24-
return apiLogService.stat(filter);
31+
32+
private static Example.Criteria getCriteria(String keyword, LocalDateTime startDate, LocalDateTime endDate, Set<String> level, Example.Criteria f) {
33+
if (keyword != null) {
34+
f.contains("data", keyword);
35+
}
36+
if (startDate != null && endDate != null) {
37+
f.between("createdAt", startDate, endDate);
38+
}
39+
if (level != null) {
40+
f.in("level", level);
41+
}
42+
return f;
2543
}
2644

2745
}

src/main/java/tech/wetech/flexmodel/application/DocumentApplicationService.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,9 @@ public class DocumentApplicationService {
4646
static {
4747
TYPE_MAPPING.put("ID", Map.of("type", "string"));
4848
TYPE_MAPPING.put("String", Map.of("type", "string"));
49-
TYPE_MAPPING.put("Text", Map.of("type", "string"));
5049
TYPE_MAPPING.put("Int", Map.of("type", "integer", "format", "int32"));
51-
TYPE_MAPPING.put("Long", Map.of("type", "integer", "format", "int64"));
5250
TYPE_MAPPING.put("Float", Map.of("type", "number", "format", "double"));
5351
TYPE_MAPPING.put("Boolean", Map.of("type", "boolean"));
54-
// typeMapping.put("", Map.of("type", "array"));
5552
TYPE_MAPPING.put("JSON", Map.of("type", "object"));
5653
}
5754

@@ -72,7 +69,7 @@ private Map<String, String> buildInfo() {
7269
return Map.of(
7370
"title", "Flexmodel API document",
7471
"description", """
75-
Learn how to interact with Flexmodel programmatically
72+
Interact with Flexmodel programmatically
7673
"""
7774
);
7875
}

src/main/java/tech/wetech/flexmodel/application/IdentityProviderApplicationService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ public List<IdentityProvider> findAll() {
2121
}
2222

2323
public IdentityProvider createProvider(IdentityProvider identityProvider) {
24-
return identityProviderService.save(identityProvider);
24+
return identityProviderService.create(identityProvider);
2525
}
2626

2727
public IdentityProvider updateProvider(IdentityProvider identityProvider) {
28-
return identityProviderService.save(identityProvider);
28+
return identityProviderService.update(identityProvider);
2929
}
3030

3131
public void deleteProvider(String id) {

src/main/java/tech/wetech/flexmodel/application/ModelingApplicationService.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import tech.wetech.flexmodel.domain.model.modeling.ModelService;
1212

1313
import java.util.List;
14+
import java.util.Set;
1415

1516
/**
1617
* @author cjbi
@@ -76,13 +77,19 @@ public void dropIndex(String datasourceName, String modelName, String indexName)
7677
modelService.dropIndex(datasourceName, modelName, indexName);
7778
}
7879

79-
public List<Entity> refresh(String datasourceName) {
80-
return modelService.refresh(datasourceName);
81-
}
82-
8380
public ValidateResult validateConnection(Datasource datasource) {
8481
return datasourceService.validate(datasource);
8582
}
8683

84+
public List<String> getPhysicsModelNames(Datasource datasource) {
85+
return datasourceService.getPhysicsModelNames(datasource);
86+
}
87+
88+
public List<Entity> syncModels(String datasourceName, Set<String> models) {
89+
return modelService.syncModels(datasourceName, models);
90+
}
8791

92+
public void importModels(String datasourceName, String script) {
93+
modelService.importModels(datasourceName, script);
94+
}
8895
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package tech.wetech.flexmodel.application;
2+
3+
import jakarta.enterprise.context.ApplicationScoped;
4+
import jakarta.inject.Inject;
5+
import tech.wetech.flexmodel.domain.model.settings.Settings;
6+
import tech.wetech.flexmodel.domain.model.settings.SettingsService;
7+
8+
/**
9+
* @author cjbi
10+
*/
11+
@ApplicationScoped
12+
public class SettingsApplicationService {
13+
14+
@Inject
15+
SettingsService settingsService;
16+
17+
public Settings getSettings() {
18+
return settingsService.getSettings();
19+
}
20+
21+
public Settings saveSettings(Settings settings) {
22+
return settingsService.saveSettings(settings);
23+
}
24+
25+
}

0 commit comments

Comments
 (0)