Skip to content

Commit d79038f

Browse files
authored
Merge pull request #145 from schemacrawler/host-files
Rework how SchemaCrawler tools execute
2 parents 031baee + 632c3db commit d79038f

23 files changed

+355
-198
lines changed

.github/workflows/docker-image-early-release.yml

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
github.event_name == 'workflow_dispatch'
2020
runs-on: ubuntu-latest
2121
permissions:
22-
id-token: write # Required for OIDC authentication
22+
id-token: write # Required for OIDC authentication
2323
contents: write # Required to create a new tag
2424
steps:
2525

@@ -72,7 +72,22 @@ jobs:
7272
echo "The Early Access Release Docker Image build will pick it up from the target directory"
7373
7474
75-
# CREATE GITHUB RELEASE AND ADD ASSETS
75+
# CREATE GITHUB RELEASE
76+
- id: create-release
77+
name: Create GitHub early access release
78+
uses: softprops/action-gh-release@v2
79+
with:
80+
target_commitish: ${{ github.sha }}
81+
tag_name: early-access-release
82+
token: ${{ secrets.GITHUB_TOKEN }}
83+
name: early-access-release
84+
draft: false
85+
prerelease: true
86+
body: |
87+
SchemaCrawler AI early access release at last commit ${{ github.sha }}
88+
generate_release_notes: true
89+
90+
# MOVE GITHUB TAG
7691
- id: install-gitsign
7792
name: Install gitsign for commit signing
7893
# See https://github.com/chainguard-dev/actions/blob/main/setup-gitsign/action.yml
@@ -96,19 +111,6 @@ jobs:
96111
git tag -a early-access-release -m "SchemaCrawler AI Early Access Release"
97112
git push --follow-tags origin early-access-release
98113
git show early-access-release
99-
- id: create-release
100-
name: Create GitHub early access release
101-
uses: softprops/action-gh-release@v2
102-
with:
103-
target_commitish: ${{ github.sha }}
104-
tag_name: early-access-release
105-
token: ${{ secrets.GITHUB_TOKEN }}
106-
name: early-access-release
107-
draft: false
108-
prerelease: true
109-
body: |
110-
SchemaCrawler AI early access release at last commit ${{ github.sha }}
111-
generate_release_notes: true
112114
113115
# BUILD AND PUBLISH DOCKER IMAGE
114116
- id: setup-qemu

.github/workflows/release.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ jobs:
1414
build:
1515
name: Create Release
1616
runs-on: ubuntu-latest
17+
permissions:
18+
id-token: write # Required for OIDC authentication
19+
contents: write # Required to create a new tag
1720
steps:
1821

1922
# VALIDATE TAGS
@@ -60,3 +63,28 @@ jobs:
6063
body: |
6164
SchemaCrawler AI ${{ github.event.release.tag_name }} release at last commit ${{ github.sha }}
6265
generate_release_notes: true
66+
67+
# MOVE GITHUB TAG
68+
- id: install-gitsign
69+
name: Install gitsign for commit signing
70+
# See https://github.com/chainguard-dev/actions/blob/main/setup-gitsign/action.yml
71+
uses: chainguard-dev/actions/setup-gitsign@3e8a2a226fad9e1ecbf2d359b8a7697554a4ac6d
72+
- id: move-tag
73+
name: Move docker-mcp-registry tag
74+
env:
75+
GITSIGN_CONNECTOR_ID: "https://github.com/login/oauth"
76+
GITSIGN_TOKEN_PROVIDER: "github-actions"
77+
shell: bash
78+
run: |
79+
# Move docker-mcp-registry tag
80+
# Set up user
81+
git config user.name "Sualeh Fatehi"
82+
git config user.email "sualeh@hotmail.com"
83+
# Confirm gitsign is installed
84+
gitsign --version
85+
# Move tag
86+
git tag -d docker-mcp-registry || true
87+
git push --delete origin docker-mcp-registry || true
88+
git tag -a docker-mcp-registry -m "SchemaCrawler AI Early Access Release"
89+
git push --follow-tags origin docker-mcp-registry
90+
git show docker-mcp-registry

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
ARG FROM_IMAGE=schemacrawler/schemacrawler:v17.1.6
1111

1212
# BUILDER stage - Build SchemaCrawler AI
13-
FROM maven:3.9-eclipse-temurin-25 AS builder
13+
FROM maven:3.9-eclipse-temurin-21 AS builder
1414

1515
# Copy source code
1616
COPY . .

schemacrawler-ai-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<dependency>
4444
<groupId>us.fatehi</groupId>
4545
<artifactId>schemacrawler</artifactId>
46-
</dependency>
46+
</dependency>
4747
<dependency>
4848
<groupId>us.fatehi</groupId>
4949
<artifactId>schemacrawler-scripting</artifactId>

schemacrawler-ai-core/src/main/java/schemacrawler/tools/ai/functions/DescribeRoutinesFunctionParameters.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@
88

99
package schemacrawler.tools.ai.functions;
1010

11-
import com.fasterxml.jackson.annotation.JsonIgnore;
1211
import com.fasterxml.jackson.annotation.JsonProperty;
1312
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
1413
import java.util.ArrayList;
1514
import java.util.Collection;
1615
import schemacrawler.tools.ai.model.AdditionalRoutineDetails;
1716
import schemacrawler.tools.ai.tools.FunctionParameters;
18-
import schemacrawler.tools.ai.tools.FunctionReturnType;
1917
import schemacrawler.tools.ai.tools.base.ParameterUtility;
2018
import tools.jackson.databind.PropertyNamingStrategies;
2119
import tools.jackson.databind.annotation.JsonNaming;
@@ -74,10 +72,4 @@ public AdditionalRoutineDetails toAdditionalRoutineDetails() {
7472
public String toString() {
7573
return ParameterUtility.parametersToString(this);
7674
}
77-
78-
@JsonIgnore
79-
@Override
80-
public final FunctionReturnType getFunctionReturnType() {
81-
return FunctionReturnType.JSON;
82-
}
8375
}

schemacrawler-ai-core/src/main/java/schemacrawler/tools/ai/functions/DescribeTablesFunctionParameters.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@
88

99
package schemacrawler.tools.ai.functions;
1010

11-
import com.fasterxml.jackson.annotation.JsonIgnore;
1211
import com.fasterxml.jackson.annotation.JsonProperty;
1312
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
1413
import java.util.ArrayList;
1514
import java.util.Collection;
1615
import schemacrawler.tools.ai.model.AdditionalTableDetails;
1716
import schemacrawler.tools.ai.tools.FunctionParameters;
18-
import schemacrawler.tools.ai.tools.FunctionReturnType;
1917
import schemacrawler.tools.ai.tools.base.ParameterUtility;
2018
import tools.jackson.databind.PropertyNamingStrategies;
2119
import tools.jackson.databind.annotation.JsonNaming;
@@ -81,10 +79,4 @@ public AdditionalTableDetails toAdditionalTableDetails() {
8179
public String toString() {
8280
return ParameterUtility.parametersToString(this);
8381
}
84-
85-
@JsonIgnore
86-
@Override
87-
public final FunctionReturnType getFunctionReturnType() {
88-
return FunctionReturnType.JSON;
89-
}
9082
}

schemacrawler-ai-core/src/main/java/schemacrawler/tools/ai/functions/DiagramFunctionExecutor.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@
88

99
package schemacrawler.tools.ai.functions;
1010

11+
import java.nio.file.Path;
1112
import schemacrawler.inclusionrule.InclusionRule;
1213
import schemacrawler.tools.ai.functions.DiagramFunctionParameters.DiagramType;
14+
import schemacrawler.tools.ai.tools.FunctionReturn;
1315
import schemacrawler.tools.ai.tools.base.AbstractExecutableFunctionExecutor;
16+
import schemacrawler.tools.ai.tools.base.ExecutionParameters;
1417
import schemacrawler.tools.options.Config;
18+
import schemacrawler.tools.options.ConfigUtility;
1519
import us.fatehi.utility.property.PropertyName;
1620

1721
public final class DiagramFunctionExecutor
@@ -22,18 +26,17 @@ protected DiagramFunctionExecutor(final PropertyName functionName) {
2226
}
2327

2428
@Override
25-
protected String getCommand() {
26-
return "script";
29+
public FunctionReturn call() {
30+
final Config additionalConfig = createAdditionalConfig();
31+
final InclusionRule grepTablesInclusionRule = makeInclusionRule(commandOptions.tableName());
32+
final ExecutionParameters executionParameters =
33+
new ExecutionParameters("script", additionalConfig, grepTablesInclusionRule, "text");
34+
final Path outputFilePath = execute(executionParameters);
35+
return returnText(outputFilePath);
2736
}
2837

29-
@Override
30-
protected InclusionRule grepTablesInclusionRule() {
31-
return makeInclusionRule(commandOptions.tableName());
32-
}
33-
34-
@Override
35-
protected Config createAdditionalConfig() {
36-
final Config additionalConfig = super.createAdditionalConfig();
38+
private Config createAdditionalConfig() {
39+
final Config additionalConfig = ConfigUtility.newConfig();
3740

3841
final DiagramType diagramType = commandOptions.diagramType();
3942
additionalConfig.put("script-language", "python");

schemacrawler-ai-core/src/main/java/schemacrawler/tools/ai/functions/DiagramFunctionParameters.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@
88

99
package schemacrawler.tools.ai.functions;
1010

11-
import com.fasterxml.jackson.annotation.JsonIgnore;
1211
import com.fasterxml.jackson.annotation.JsonProperty;
1312
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
1413
import schemacrawler.tools.ai.tools.FunctionParameters;
15-
import schemacrawler.tools.ai.tools.FunctionReturnType;
1614
import schemacrawler.tools.ai.tools.base.ParameterUtility;
1715
import tools.jackson.databind.PropertyNamingStrategies;
1816
import tools.jackson.databind.annotation.JsonNaming;
@@ -48,7 +46,7 @@ public enum DiagramType {
4846
private final String script;
4947
private final String onlineEditorUrl;
5048

51-
private DiagramType(final String script, final String url) {
49+
DiagramType(final String script, final String url) {
5250
this.script = script;
5351
onlineEditorUrl = url;
5452
}
@@ -75,10 +73,4 @@ public String script() {
7573
public String toString() {
7674
return ParameterUtility.parametersToString(this);
7775
}
78-
79-
@JsonIgnore
80-
@Override
81-
public final FunctionReturnType getFunctionReturnType() {
82-
return FunctionReturnType.TEXT;
83-
}
8476
}

schemacrawler-ai-core/src/main/java/schemacrawler/tools/ai/functions/LintFunctionExecutor.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@
88

99
package schemacrawler.tools.ai.functions;
1010

11+
import java.nio.file.Path;
1112
import schemacrawler.inclusionrule.InclusionRule;
13+
import schemacrawler.tools.ai.tools.FunctionReturn;
1214
import schemacrawler.tools.ai.tools.base.AbstractExecutableFunctionExecutor;
15+
import schemacrawler.tools.ai.tools.base.ExecutionParameters;
16+
import schemacrawler.tools.command.lint.options.LintReportOutputFormat;
1317
import us.fatehi.utility.property.PropertyName;
1418

1519
public final class LintFunctionExecutor
@@ -20,12 +24,12 @@ protected LintFunctionExecutor(final PropertyName functionName) {
2024
}
2125

2226
@Override
23-
protected String getCommand() {
24-
return "lint";
25-
}
26-
27-
@Override
28-
protected InclusionRule grepTablesInclusionRule() {
29-
return makeInclusionRule(commandOptions.tableName());
27+
public FunctionReturn call() {
28+
final String outputFormat = LintReportOutputFormat.json.name();
29+
final InclusionRule grepTablesInclusionRule = makeInclusionRule(commandOptions.tableName());
30+
final ExecutionParameters executionParameters =
31+
new ExecutionParameters("lint", grepTablesInclusionRule, outputFormat);
32+
final Path outputFilePath = execute(executionParameters);
33+
return returnJson(outputFilePath);
3034
}
3135
}

schemacrawler-ai-core/src/main/java/schemacrawler/tools/ai/functions/LintFunctionParameters.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@
88

99
package schemacrawler.tools.ai.functions;
1010

11-
import com.fasterxml.jackson.annotation.JsonIgnore;
1211
import com.fasterxml.jackson.annotation.JsonProperty;
1312
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
1413
import schemacrawler.tools.ai.tools.FunctionParameters;
15-
import schemacrawler.tools.ai.tools.FunctionReturnType;
1614
import schemacrawler.tools.ai.tools.base.ParameterUtility;
1715
import tools.jackson.databind.PropertyNamingStrategies;
1816
import tools.jackson.databind.annotation.JsonNaming;
@@ -41,10 +39,4 @@ table name (including the schema).
4139
public String toString() {
4240
return ParameterUtility.parametersToString(this);
4341
}
44-
45-
@JsonIgnore
46-
@Override
47-
public FunctionReturnType getFunctionReturnType() {
48-
return FunctionReturnType.JSON;
49-
}
5042
}

0 commit comments

Comments
 (0)