Skip to content

Commit

Permalink
Merge pull request #39 from johnmai-dev/next-1.3.0
Browse files Browse the repository at this point in the history
Next 1.3.0
  • Loading branch information
johnmai-dev authored Jan 27, 2025
2 parents ed1a03d + fd32aa5 commit 4433f18
Show file tree
Hide file tree
Showing 21 changed files with 155 additions and 69 deletions.
5 changes: 3 additions & 2 deletions .run/Run Plugin.run.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Run Plugin" type="GradleRunConfiguration" factoryName="Gradle">
<log_file alias="idea.log" path="$PROJECT_DIR$/build/idea-sandbox/system/log/idea.log" />
<log_file alias="IDE logs" path="$PROJECT_DIR$/build/idea-sandbox/*/log/idea.log" show_all="true" />
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
Expand All @@ -19,6 +19,7 @@
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<method v="2" />
</configuration>
</component>
</component>
4 changes: 0 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import org.jetbrains.changelog.Changelog
import org.jetbrains.changelog.markdownToHTML
import org.jetbrains.intellij.platform.gradle.TestFrameworkType

plugins {
Expand Down Expand Up @@ -53,9 +52,6 @@ dependencies {
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace.
plugins(providers.gradleProperty("platformPlugins").map { it.split(',') })

instrumentationTools()
pluginVerifier()
zipSigner()
testFramework(TestFrameworkType.Platform)
}
}
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ platformPlugins =
platformBundledPlugins = org.jetbrains.plugins.go

# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 8.10
gradleVersion = 8.11.1

# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
kotlin.stdlib.default.dependency = false
Expand Down
14 changes: 7 additions & 7 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
[versions]
# libraries
junit = "5.11.0"
lombok = "1.18.34"
guava = "33.3.1-jre"
druid = "1.2.23"
junit = "5.11.4"
lombok = "1.18.36"
guava = "33.4.0-jre"
druid = "1.2.24"
jsqlparser = "5.0"
evoInflector = "1.3"
annotations = "24.1.0"
annotations = "26.0.2"

# plugins
changelog = "2.2.1"
intelliJPlatform = "2.0.1"
intelliJPlatform = "2.2.1"
kotlin = "1.9.25"
kover = "0.8.3"
qodana = "2024.1.9"
qodana = "2024.3.4"

[libraries]
junit = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" }
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
2 changes: 1 addition & 1 deletion qodana.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# https://www.jetbrains.com/help/qodana/qodana-yaml.html

version: 1.0
linter: jetbrains/qodana-jvm-community:latest
linter: jetbrains/qodana-jvm-community:2024.2
projectJDK: "17"
profile:
name: qodana.recommended
Expand Down
4 changes: 4 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
rootProject.name = "Go ORM Helper"

plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
27 changes: 22 additions & 5 deletions src/main/java/com/github/maiqingqiang/goormhelper/Types.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.github.maiqingqiang.goormhelper.sql2struct.impl.SQL2GormStruct;
import com.github.maiqingqiang.goormhelper.sql2struct.impl.SQL2Struct;
import com.github.maiqingqiang.goormhelper.sql2struct.impl.SQL2XormStruct;
import com.intellij.openapi.project.Project;

import java.util.List;
import java.util.regex.Pattern;
Expand Down Expand Up @@ -61,12 +62,12 @@ public String toString() {
return name;
}

public ISQL2Struct sql2Struct(String sql, DbType dbType) {
public ISQL2Struct sql2Struct(Project project, String sql, DbType dbType) {
return switch (this) {
case General -> new SQL2Struct(sql, dbType);
case Gorm -> new SQL2GormStruct(sql, dbType);
case Xorm -> new SQL2XormStruct(sql, dbType);
case GoFrame -> new SQL2GoFrameStruct(sql, dbType);
case General -> new SQL2Struct(project, sql, dbType);
case Gorm -> new SQL2GormStruct(project, sql, dbType);
case Xorm -> new SQL2XormStruct(project, sql, dbType);
case GoFrame -> new SQL2GoFrameStruct(project, sql, dbType);
default -> null;
};
}
Expand Down Expand Up @@ -96,4 +97,20 @@ public String toString() {
return name;
}
}

enum TagMode {
Compact(GoORMHelperBundle.message("tagMode.Compact")),
Full(GoORMHelperBundle.message("tagMode.Full"));

private final String name;

@Override
public String toString() {
return name;
}

TagMode(String name) {
this.name = name;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ protected void doExecute(@NotNull Editor editor, @Nullable Caret caret, DataCont
return;
}

ISQL2Struct sql2Struct = finalSelectedORM.sql2Struct(text, finalSelectedDatabase.toDbType());
ISQL2Struct sql2Struct = finalSelectedORM.sql2Struct(project, text, finalSelectedDatabase.toDbType());
if (sql2Struct == null) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Caret;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;

import java.util.Objects;
Expand All @@ -19,13 +20,15 @@ public class SQL2StructAction extends AnAction {
@Override
public void actionPerformed(@NotNull AnActionEvent e) {

GoORMHelperProjectSettings.State state = Objects.requireNonNull(GoORMHelperProjectSettings.getInstance(Objects.requireNonNull(e.getProject())).getState());
Project project = e.getProject();

GoORMHelperProjectSettings.State state = Objects.requireNonNull(GoORMHelperProjectSettings.getInstance(Objects.requireNonNull(project)).getState());

Types.ORM selectedORM = state.defaultORM;
Types.Database selectedDatabase = state.defaultDatabase;

if (selectedORM == Types.ORM.AskEveryTime || selectedDatabase == Types.Database.AskEveryTime) {
ConvertSettingDialogWrapper wrapper = new ConvertSettingDialogWrapper(e.getProject());
ConvertSettingDialogWrapper wrapper = new ConvertSettingDialogWrapper(project);
if (!wrapper.showAndGet()) return;

selectedORM = (Types.ORM) wrapper.getOrmComponent().getComponent().getSelectedItem();
Expand All @@ -44,12 +47,14 @@ public void actionPerformed(@NotNull AnActionEvent e) {
final Types.ORM finalSelectedORM = selectedORM;
final Types.Database finalSelectedDatabase = selectedDatabase;

WriteCommandAction.runWriteCommandAction(e.getProject(), () -> {
WriteCommandAction.runWriteCommandAction(project, () -> {
if (text == null || text.isEmpty() || finalSelectedORM == null || finalSelectedDatabase == null) return;

ISQL2Struct sql2Struct = finalSelectedORM.sql2Struct(text, finalSelectedDatabase.toDbType());
ISQL2Struct sql2Struct = finalSelectedORM.sql2Struct(project, text, finalSelectedDatabase.toDbType());

editor.getDocument().replaceString(start, end, sql2Struct.convert());
if (sql2Struct != null) {
editor.getDocument().replaceString(start, end, sql2Struct.convert());
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ public void setDefaultDatabase(Types.Database database) {
state.defaultDatabase = database;
}

public void setDefaultTagMode(Types.TagMode tagMode) {
state.defaultTagMode = tagMode;
}

public void setEnableGlobalScan(boolean enable) {
state.enableGlobalScan = enable;
}
Expand All @@ -59,6 +63,7 @@ public void setScanPathList(List<String> scanPathList) {
public static class State extends SimpleModificationTracker {
public Types.ORM defaultORM = Types.ORM.AskEveryTime;
public Types.Database defaultDatabase = Types.Database.AskEveryTime;
public Types.TagMode defaultTagMode = Types.TagMode.Full;
public boolean enableGlobalScan = true;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

import com.alibaba.druid.DbType;
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;

public class SQL2GoFrameStruct extends SQL2Struct {
public SQL2GoFrameStruct(String sql, DbType dbType) {
super(sql, dbType);
public SQL2GoFrameStruct(Project project, String sql, DbType dbType) {
super(project, sql, dbType);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,37 @@

import com.alibaba.druid.DbType;
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
import com.github.maiqingqiang.goormhelper.Types;
import com.github.maiqingqiang.goormhelper.services.GoORMHelperProjectSettings;
import com.github.maiqingqiang.goormhelper.utils.Strings;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;

import java.util.Objects;

public class SQL2GormStruct extends SQL2Struct {
public SQL2GormStruct(String sql, DbType dbType) {
super(sql, dbType);
public SQL2GormStruct(Project project, String sql, DbType dbType) {
super(project, sql, dbType);
}

@Override
protected void generateORMTag(@NotNull StringBuilder stringBuilder, @NotNull SQLColumnDefinition definition) {
stringBuilder.append("gorm:\"")
.append("column:").append(getColumn(definition)).append(";")
.append("type:").append(getDBType(definition)).append(";");
GoORMHelperProjectSettings.State state = Objects.requireNonNull(GoORMHelperProjectSettings.getInstance(project).getState());

if (state.defaultTagMode == Types.TagMode.Compact || state.defaultTagMode == Types.TagMode.Full) {
stringBuilder.append("gorm:\"")
.append("column:").append(getColumn(definition)).append(";");
}

if (state.defaultTagMode == Types.TagMode.Full) {
appendOriginalTagAttributes(stringBuilder, definition);
}

stringBuilder.append("\" ");
}

private void appendOriginalTagAttributes(@NotNull StringBuilder stringBuilder, @NotNull SQLColumnDefinition definition) {
stringBuilder.append("type:").append(getDBType(definition)).append(";");

String comment = getComment(definition);
if (!comment.isEmpty()) {
Expand All @@ -25,18 +43,15 @@ protected void generateORMTag(@NotNull StringBuilder stringBuilder, @NotNull SQL
stringBuilder.append("primaryKey;");
}

if (definition.containsNotNullConstaint()) {
if (definition.containsNotNullConstraint()) {
stringBuilder.append("not null;");
}

if (definition.getDefaultExpr() != null) {
String def = Strings.clearSingleQuotn(definition.getDefaultExpr().toString());

if (!def.isEmpty()) {
stringBuilder.append("default:").append(def).append(";");
}
}

stringBuilder.append("\" ");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.github.maiqingqiang.goormhelper.sql2struct.ISQL2Struct;
import com.github.maiqingqiang.goormhelper.utils.Strings;
import com.google.common.base.CaseFormat;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;

import java.util.List;
Expand Down Expand Up @@ -63,11 +64,13 @@ public class SQL2Struct implements ISQL2Struct {
private static final String defaultUnsignedDataType = "uint32";
private final String sql;
private final DbType dbType;
protected final Project project;


public SQL2Struct(String sql, DbType dbType) {
public SQL2Struct(Project project, String sql, DbType dbType) {
this.sql = sql;
this.dbType = dbType;
this.project = project;
}

public String convert() {
Expand All @@ -84,23 +87,23 @@ public String convert() {
}

private void singleConvert(@NotNull StringBuilder stringBuilder, SQLStatement statement) {
SQLCreateTableStatement createTableStatement = (SQLCreateTableStatement) statement;
if (statement instanceof SQLCreateTableStatement createTableStatement) {
String tableName = Strings.clearQuote(createTableStatement.getTableName());
tableName = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, tableName);

String tableName = Strings.clearQuote(createTableStatement.getTableName());
tableName = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, tableName);
stringBuilder.append("type ").append(tableName).append(" struct {\n");

stringBuilder.append("type ").append(tableName).append(" struct {\n");

List<SQLTableElement> tableElementList = createTableStatement.getTableElementList();

List<SQLTableElement> tableElementList = createTableStatement.getTableElementList();

for (SQLTableElement sqlTableElement : tableElementList) {
if (sqlTableElement instanceof SQLColumnDefinition sqlColumnDefinition) {
generateStructField(stringBuilder, sqlColumnDefinition);
for (SQLTableElement sqlTableElement : tableElementList) {
if (sqlTableElement instanceof SQLColumnDefinition sqlColumnDefinition) {
generateStructField(stringBuilder, sqlColumnDefinition);
}
}
}

stringBuilder.append("}\n\n");
stringBuilder.append("}\n\n");
}
}

protected String getGoType(@NotNull SQLColumnDefinition definition) {
Expand Down
Loading

0 comments on commit 4433f18

Please sign in to comment.