Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| da3c467569 | |||
| 0c932d4e92 | |||
| a400bb99b8 | |||
| bdc9a4ac4d | |||
| b0bf103195 | |||
| d36c366ab6 | |||
| cddb4dd7fe |
2
pom.xml
2
pom.xml
@@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>kangaroo-and-rabbit</groupId>
|
<groupId>kangaroo-and-rabbit</groupId>
|
||||||
<artifactId>archidata</artifactId>
|
<artifactId>archidata</artifactId>
|
||||||
<version>0.23.0</version>
|
<version>0.23.4</version>
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>21</java.version>
|
<java.version>21</java.version>
|
||||||
<maven.compiler.version>3.1</maven.compiler.version>
|
<maven.compiler.version>3.1</maven.compiler.version>
|
||||||
|
|||||||
@@ -289,28 +289,32 @@ public class TsClassElement {
|
|||||||
|| clazz == long.class || clazz == Long.class || clazz == float.class || clazz == Float.class
|
|| clazz == long.class || clazz == Long.class || clazz == float.class || clazz == Float.class
|
||||||
|| clazz == double.class || clazz == Double.class) {
|
|| clazz == double.class || clazz == Double.class) {
|
||||||
if (field.min() != null) {
|
if (field.min() != null) {
|
||||||
builder.append(".min(");
|
builder.append(".gte(");
|
||||||
builder.append(field.min().value());
|
builder.append(field.min().value());
|
||||||
builder.append(")");
|
builder.append(")");
|
||||||
}
|
}
|
||||||
if (field.max() != null) {
|
if (field.max() != null) {
|
||||||
builder.append(".max(");
|
builder.append(".lte(");
|
||||||
builder.append(field.max().value());
|
builder.append(field.max().value());
|
||||||
builder.append(")");
|
builder.append(")");
|
||||||
}
|
}
|
||||||
if (field.decimalMax() != null) {
|
if (field.decimalMax() != null) {
|
||||||
builder.append(".max(");
|
if (field.decimalMax().inclusive()) {
|
||||||
|
builder.append(".lte(");
|
||||||
|
} else {
|
||||||
|
builder.append(".lt(");
|
||||||
|
}
|
||||||
builder.append(field.decimalMax().value());
|
builder.append(field.decimalMax().value());
|
||||||
builder.append(", { inclusive: ");
|
builder.append(")");
|
||||||
builder.append(field.decimalMax().inclusive() ? "true" : "false");
|
|
||||||
builder.append("})");
|
|
||||||
}
|
}
|
||||||
if (field.decimalMin() != null) {
|
if (field.decimalMin() != null) {
|
||||||
builder.append(".min(");
|
if (field.decimalMin().inclusive()) {
|
||||||
|
builder.append(".gte(");
|
||||||
|
} else {
|
||||||
|
builder.append(".gt(");
|
||||||
|
}
|
||||||
builder.append(field.decimalMin().value());
|
builder.append(field.decimalMin().value());
|
||||||
builder.append(", { inclusive: ");
|
builder.append(")");
|
||||||
builder.append(field.decimalMin().inclusive() ? "true" : "false");
|
|
||||||
builder.append("})");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
@@ -349,16 +353,19 @@ public class TsClassElement {
|
|||||||
out.append("export const ");
|
out.append("export const ");
|
||||||
out.append(this.zodName);
|
out.append(this.zodName);
|
||||||
out.append(" = ");
|
out.append(" = ");
|
||||||
|
// Check if the object is empty:
|
||||||
|
boolean isEmpty = model.getFields().size() == 0;
|
||||||
|
|
||||||
if (model.getExtendsClass() != null) {
|
if (model.getExtendsClass() != null) {
|
||||||
final ClassModel parentClass = model.getExtendsClass();
|
final ClassModel parentClass = model.getExtendsClass();
|
||||||
final TsClassElement tsParentModel = tsGroup.find(parentClass);
|
final TsClassElement tsParentModel = tsGroup.find(parentClass);
|
||||||
out.append(tsParentModel.zodName);
|
out.append(tsParentModel.zodName);
|
||||||
out.append(".extend({");
|
if (!isEmpty) {
|
||||||
|
out.append(".extend({\n");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
out.append("zod.object({");
|
out.append("zod.object({\n");
|
||||||
}
|
}
|
||||||
out.append("\n");
|
|
||||||
for (final FieldProperty field : model.getFields()) {
|
for (final FieldProperty field : model.getFields()) {
|
||||||
final ClassModel fieldModel = field.model();
|
final ClassModel fieldModel = field.model();
|
||||||
if (field.comment() != null) {
|
if (field.comment() != null) {
|
||||||
@@ -386,7 +393,11 @@ public class TsClassElement {
|
|||||||
out.append(",\n");
|
out.append(",\n");
|
||||||
}
|
}
|
||||||
final List<String> omitField = model.getReadOnlyField();
|
final List<String> omitField = model.getReadOnlyField();
|
||||||
out.append("\n});\n");
|
if (model.getExtendsClass() != null && isEmpty) {
|
||||||
|
out.append(";\n");
|
||||||
|
} else {
|
||||||
|
out.append("\n});\n");
|
||||||
|
}
|
||||||
out.append(generateZodInfer(this.tsTypeName, this.zodName));
|
out.append(generateZodInfer(this.tsTypeName, this.zodName));
|
||||||
out.append(generateExportCheckFunctionWrite(""));
|
out.append(generateExportCheckFunctionWrite(""));
|
||||||
// check if we need to generate write mode :
|
// check if we need to generate write mode :
|
||||||
@@ -398,17 +409,18 @@ public class TsClassElement {
|
|||||||
out.append("export const ");
|
out.append("export const ");
|
||||||
out.append(this.zodName);
|
out.append(this.zodName);
|
||||||
out.append("Write = ");
|
out.append("Write = ");
|
||||||
|
isEmpty = model.getFields().stream().filter(field -> !field.readOnly()).count() == 0;
|
||||||
if (model.getExtendsClass() != null) {
|
if (model.getExtendsClass() != null) {
|
||||||
final ClassModel parentClass = model.getExtendsClass();
|
final ClassModel parentClass = model.getExtendsClass();
|
||||||
final TsClassElement tsParentModel = tsGroup.find(parentClass);
|
final TsClassElement tsParentModel = tsGroup.find(parentClass);
|
||||||
out.append(tsParentModel.zodName);
|
out.append(tsParentModel.zodName);
|
||||||
out.append("Write");
|
out.append("Write");
|
||||||
out.append(".extend({");
|
if (!isEmpty) {
|
||||||
|
out.append(".extend({\n");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
out.append("zod.object({");
|
out.append("zod.object({\n");
|
||||||
}
|
}
|
||||||
out.append("\n");
|
|
||||||
for (final FieldProperty field : model.getFields()) {
|
for (final FieldProperty field : model.getFields()) {
|
||||||
// remove all readOnly field
|
// remove all readOnly field
|
||||||
if (field.readOnly()) {
|
if (field.readOnly()) {
|
||||||
@@ -446,7 +458,11 @@ public class TsClassElement {
|
|||||||
}
|
}
|
||||||
out.append(",\n");
|
out.append(",\n");
|
||||||
}
|
}
|
||||||
out.append("\n});\n");
|
if (model.getExtendsClass() != null && isEmpty) {
|
||||||
|
out.append(";\n");
|
||||||
|
} else {
|
||||||
|
out.append("\n});\n");
|
||||||
|
}
|
||||||
out.append(generateZodInfer(this.tsTypeName + "Write", this.zodName + "Write"));
|
out.append(generateZodInfer(this.tsTypeName + "Write", this.zodName + "Write"));
|
||||||
// Check only the input value ==> no need of the output
|
// Check only the input value ==> no need of the output
|
||||||
out.append(generateExportCheckFunctionWrite("Write"));
|
out.append(generateExportCheckFunctionWrite("Write"));
|
||||||
|
|||||||
13
src/org/kar/archidata/model/token/JwtHeader.java
Normal file
13
src/org/kar/archidata/model/token/JwtHeader.java
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package org.kar.archidata.model.token;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
|
|
||||||
|
public class JwtHeader {
|
||||||
|
@Size(max = 128)
|
||||||
|
@NotNull
|
||||||
|
public String typ;
|
||||||
|
@Size(max = 128)
|
||||||
|
@NotNull
|
||||||
|
public String alg;
|
||||||
|
}
|
||||||
29
src/org/kar/archidata/model/token/JwtPayload.java
Normal file
29
src/org/kar/archidata/model/token/JwtPayload.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package org.kar.archidata.model.token;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
public class JwtPayload {
|
||||||
|
// User identification
|
||||||
|
@NotNull
|
||||||
|
public String sub;
|
||||||
|
// Application destination
|
||||||
|
@NotNull
|
||||||
|
public String application;
|
||||||
|
// Emitter of the token
|
||||||
|
@NotNull
|
||||||
|
public String iss;
|
||||||
|
// Access Right Map<application, Map< section, right>>
|
||||||
|
@NotNull
|
||||||
|
public Map<String, Map<String, Long>> right;
|
||||||
|
// user name
|
||||||
|
@NotNull
|
||||||
|
public String login;
|
||||||
|
// Expiration (timestamp)
|
||||||
|
@NotNull
|
||||||
|
public Long exp;
|
||||||
|
// Create time (timestamp)
|
||||||
|
@NotNull
|
||||||
|
public Long iat;
|
||||||
|
}
|
||||||
12
src/org/kar/archidata/model/token/JwtToken.java
Normal file
12
src/org/kar/archidata/model/token/JwtToken.java
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package org.kar.archidata.model.token;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
public class JwtToken {
|
||||||
|
@NotNull
|
||||||
|
public JwtHeader header;
|
||||||
|
@NotNull
|
||||||
|
public JwtPayload payload;
|
||||||
|
@NotNull
|
||||||
|
public String signature;
|
||||||
|
}
|
||||||
@@ -1 +1 @@
|
|||||||
0.23.0
|
0.23.4
|
||||||
|
|||||||
Reference in New Issue
Block a user