diff --git a/script/addIndex.groovy b/script/addIndex.groovy new file mode 100644 index 00000000..9dbe31d3 --- /dev/null +++ b/script/addIndex.groovy @@ -0,0 +1,43 @@ +import groovy.io.FileType + + +def camelToSnake(String str) { + + str = str[0].toLowerCase() + str[1..-1] + if (str.endsWith("Entity")) { + str = str.substring(0, str.length() - 6) + } + + return str.replaceAll("([A-Z]+)", "_\$1").toLowerCase() +} + + +new File("../src/main/java").eachFileRecurse(FileType.FILES) { + + if (it.name.endsWith(".java")) { + def content = it.text + + + if (content.contains("extends OrgCommonEntity")) { + + if (content.contains("@Table")) { + + println("文件名: ${it.name} 包含table注解, 跳过") + } else { + + + def lines = it.readLines() + + + def lineNo = lines.findIndexOf { it.contains("extends OrgCommonEntity") } + + lines.add(lineNo , """ +@jakarta.persistence.Table(indexes = @jakarta.persistence.Index(name ="idx_${camelToSnake(it.name.substring(0, it.name.indexOf(".java")))}_org_id", columnList = "organization_id")) +""") + it.text = lines.join("\n") + + println("文件名: ${it.name} 添加索引成功") + } + } + } +} \ No newline at end of file diff --git a/src/main/java/cn/lihongjie/coal/Codegen.java b/src/main/java/cn/lihongjie/coal/Codegen.java index 0b0ea728..c5125a73 100644 --- a/src/main/java/cn/lihongjie/coal/Codegen.java +++ b/src/main/java/cn/lihongjie/coal/Codegen.java @@ -26,6 +26,7 @@ import com.squareup.javapoet.*; import jakarta.persistence.CascadeType; import jakarta.persistence.Entity; import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; import lombok.Data; import lombok.SneakyThrows; @@ -126,6 +127,20 @@ public class Codegen { .addAnnotation(Entity.class) .build(); + if (orgMode){ + entity = + entity.toBuilder() + .addAnnotation( + AnnotationSpec.builder(Table.class) + .addMember( + "indexes", + "@jakarta.persistence.Index(name =\"idx_" + + lModuleName + + "_org_id\", columnList = \"organization_id\")") + .build()) + .build(); + } + if (archive) { entity = entity.toBuilder()