Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions schemacrawler-ai-core/src/main/java/module-info.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
module us.fatehi.schemacrawler.ai_core {
// Dependencies
requires us.fatehi.schemacrawler.schemacrawler;
requires transitive us.fatehi.schemacrawler.schemacrawler;
requires us.fatehi.schemacrawler.scripting;
requires us.fatehi.schemacrawler.offline;
requires us.fatehi.schemacrawler.lint;
requires java.logging;
requires java.sql;
requires com.fasterxml.jackson.module.jsonSchema;
requires com.fasterxml.jackson.core;
requires com.fasterxml.jackson.databind;
requires transitive com.fasterxml.jackson.databind;

// Export only the public API packages
exports schemacrawler.tools.ai.tools;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

package schemacrawler.tools.ai.functions;

import schemacrawler.tools.ai.tools.AbstractFunctionDefinition;
import schemacrawler.tools.ai.tools.base.AbstractFunctionDefinition;

public final class DescribeRoutinesFunctionDefinition
extends AbstractFunctionDefinition<DescribeRoutinesFunctionParameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import schemacrawler.tools.ai.model.CatalogDocument;
import schemacrawler.tools.ai.model.CompactCatalogUtility;
import schemacrawler.tools.ai.tools.JsonFunctionReturn;
import schemacrawler.tools.ai.tools.base.AbstractJsonFunctionExecutor;
import us.fatehi.utility.property.PropertyName;

public final class DescribeRoutinesFunctionExecutor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import schemacrawler.tools.ai.model.AdditionalRoutineDetails;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.FunctionReturnType;
import schemacrawler.tools.ai.utility.JsonUtility;
import schemacrawler.tools.ai.tools.base.ParameterUtility;

@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public record DescribeRoutinesFunctionParameters(
Expand Down Expand Up @@ -72,7 +72,7 @@ public AdditionalRoutineDetails toAdditionalRoutineDetails() {

@Override
public String toString() {
return JsonUtility.parametersToString(this);
return ParameterUtility.parametersToString(this);
}

@JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

package schemacrawler.tools.ai.functions;

import schemacrawler.tools.ai.tools.AbstractFunctionDefinition;
import schemacrawler.tools.ai.tools.base.AbstractFunctionDefinition;

public final class DescribeTablesFunctionDefinition
extends AbstractFunctionDefinition<DescribeTablesFunctionParameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import java.util.ArrayList;
import java.util.Collection;
import schemacrawler.inclusionrule.ExcludeAll;
import schemacrawler.inclusionrule.IncludeAll;
import schemacrawler.inclusionrule.InclusionRule;
import schemacrawler.schemacrawler.GrepOptionsBuilder;
import schemacrawler.schemacrawler.LimitOptionsBuilder;
Expand All @@ -23,6 +24,7 @@
import schemacrawler.tools.ai.model.CatalogDocument;
import schemacrawler.tools.ai.model.CompactCatalogUtility;
import schemacrawler.tools.ai.tools.JsonFunctionReturn;
import schemacrawler.tools.ai.tools.base.AbstractJsonFunctionExecutor;
import us.fatehi.utility.property.PropertyName;

public final class DescribeTablesFunctionExecutor
Expand Down Expand Up @@ -62,7 +64,8 @@ protected SchemaCrawlerOptions createSchemaCrawlerOptions() {
LimitOptionsBuilder.builder()
.includeSynonyms(new ExcludeAll())
.includeSequences(new ExcludeAll())
.includeRoutines(new ExcludeAll());
.includeRoutines(new ExcludeAll())
.includeTables(new IncludeAll());
final InclusionRule grepTablesPattern = makeInclusionRule(commandOptions.tableName());
final GrepOptionsBuilder grepOptionsBuilder =
GrepOptionsBuilder.builder().includeGreppedTables(grepTablesPattern);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import schemacrawler.tools.ai.model.AdditionalTableDetails;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.FunctionReturnType;
import schemacrawler.tools.ai.utility.JsonUtility;
import schemacrawler.tools.ai.tools.base.ParameterUtility;

@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public record DescribeTablesFunctionParameters(
Expand Down Expand Up @@ -79,7 +79,7 @@ public AdditionalTableDetails toAdditionalTableDetails() {

@Override
public String toString() {
return JsonUtility.parametersToString(this);
return ParameterUtility.parametersToString(this);
}

@JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

package schemacrawler.tools.ai.functions;

import schemacrawler.tools.ai.tools.AbstractFunctionDefinition;
import schemacrawler.tools.ai.tools.base.AbstractFunctionDefinition;

public final class LintFunctionDefinition
extends AbstractFunctionDefinition<LintFunctionParameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
package schemacrawler.tools.ai.functions;

import schemacrawler.inclusionrule.InclusionRule;
import schemacrawler.tools.ai.tools.AbstractExecutableFunctionExecutor;
import schemacrawler.tools.ai.tools.base.AbstractExecutableFunctionExecutor;
import us.fatehi.utility.property.PropertyName;

public final class LintFunctionExecutor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.FunctionReturnType;
import schemacrawler.tools.ai.utility.JsonUtility;
import schemacrawler.tools.ai.tools.base.ParameterUtility;

@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public record LintFunctionParameters(
Expand All @@ -39,7 +39,7 @@ table name (including the schema).

@Override
public String toString() {
return JsonUtility.parametersToString(this);
return ParameterUtility.parametersToString(this);
}

@JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

package schemacrawler.tools.ai.functions;

import schemacrawler.tools.ai.tools.AbstractFunctionDefinition;
import schemacrawler.tools.ai.tools.base.AbstractFunctionDefinition;

public final class ListAcrossTablesFunctionDefinition
extends AbstractFunctionDefinition<ListAcrossTablesFunctionParameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import schemacrawler.tools.ai.model.IndexDocument;
import schemacrawler.tools.ai.model.TriggerDocument;
import schemacrawler.tools.ai.tools.JsonFunctionReturn;
import schemacrawler.tools.ai.tools.base.AbstractJsonFunctionExecutor;
import us.fatehi.utility.property.PropertyName;

public final class ListAcrossTablesFunctionExecutor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.FunctionReturnType;
import schemacrawler.tools.ai.utility.JsonUtility;
import schemacrawler.tools.ai.tools.base.ParameterUtility;

@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public record ListAcrossTablesFunctionParameters(
Expand Down Expand Up @@ -80,7 +80,7 @@ public String nameAttribute() {

@Override
public String toString() {
return JsonUtility.parametersToString(this);
return ParameterUtility.parametersToString(this);
}

@JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

package schemacrawler.tools.ai.functions;

import schemacrawler.tools.ai.tools.AbstractFunctionDefinition;
import schemacrawler.tools.ai.tools.base.AbstractFunctionDefinition;

public final class ListFunctionDefinition
extends AbstractFunctionDefinition<ListFunctionParameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import schemacrawler.tools.ai.model.DatabaseObjectDocument;
import schemacrawler.tools.ai.model.DatabaseObjectType;
import schemacrawler.tools.ai.tools.JsonFunctionReturn;
import schemacrawler.tools.ai.tools.base.AbstractJsonFunctionExecutor;
import us.fatehi.utility.property.PropertyName;

public final class ListFunctionExecutor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import schemacrawler.tools.ai.model.DatabaseObjectType;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.FunctionReturnType;
import schemacrawler.tools.ai.utility.JsonUtility;
import schemacrawler.tools.ai.tools.base.ParameterUtility;

@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public record ListFunctionParameters(
Expand Down Expand Up @@ -51,7 +51,7 @@ database object name (including the schema). May match

@Override
public String toString() {
return JsonUtility.parametersToString(this);
return ParameterUtility.parametersToString(this);
}

@JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

package schemacrawler.tools.ai.functions;

import schemacrawler.tools.ai.tools.AbstractFunctionDefinition;
import schemacrawler.tools.ai.tools.NoParameters;
import schemacrawler.tools.ai.tools.base.AbstractFunctionDefinition;

public final class ServerInformationFunctionDefinition
extends AbstractFunctionDefinition<NoParameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import schemacrawler.schemacrawler.SchemaCrawlerOptionsBuilder;
import schemacrawler.tools.ai.tools.JsonFunctionReturn;
import schemacrawler.tools.ai.tools.NoParameters;
import schemacrawler.tools.ai.tools.base.AbstractJsonFunctionExecutor;
import us.fatehi.utility.property.Property;
import us.fatehi.utility.property.PropertyName;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

package schemacrawler.tools.ai.functions;

import schemacrawler.tools.ai.tools.AbstractFunctionDefinition;
import schemacrawler.tools.ai.tools.base.AbstractFunctionDefinition;

public final class TableSampleFunctionDefinition
extends AbstractFunctionDefinition<TableSampleFunctionParameters> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
package schemacrawler.tools.ai.functions;

import schemacrawler.inclusionrule.InclusionRule;
import schemacrawler.tools.ai.tools.AbstractExecutableFunctionExecutor;
import schemacrawler.tools.ai.tools.base.AbstractExecutableFunctionExecutor;
import us.fatehi.utility.property.PropertyName;

public final class TableSampleFunctionExecutor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.FunctionReturnType;
import schemacrawler.tools.ai.utility.JsonUtility;
import schemacrawler.tools.ai.tools.base.ParameterUtility;

@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public record TableSampleFunctionParameters(
Expand All @@ -39,7 +39,7 @@ table name (including the schema).

@Override
public String toString() {
return JsonUtility.parametersToString(this);
return ParameterUtility.parametersToString(this);
}

@JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public final class FunctionCallback<P extends FunctionParameters> {

private static final Logger LOGGER = Logger.getLogger(FunctionCallback.class.getCanonicalName());

private FunctionDefinition<P> functionDefinition;
private final FunctionDefinition<P> functionDefinition;
private final Catalog catalog;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,25 @@
* SPDX-License-Identifier: CC-BY-NC-4.0
*/

package schemacrawler.tools.ai.tools;
package schemacrawler.tools.ai.tools.base;

import static schemacrawler.tools.ai.utility.JsonUtility.mapper;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.StringWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import schemacrawler.inclusionrule.ExcludeAll;
import schemacrawler.inclusionrule.InclusionRule;
import schemacrawler.schemacrawler.GrepOptionsBuilder;
import schemacrawler.schemacrawler.LimitOptionsBuilder;
import schemacrawler.schemacrawler.SchemaCrawlerOptions;
import schemacrawler.schemacrawler.SchemaCrawlerOptionsBuilder;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.FunctionReturn;
import schemacrawler.tools.ai.tools.FunctionReturnType;
import schemacrawler.tools.ai.tools.JsonFunctionReturn;
import schemacrawler.tools.ai.tools.TextFunctionReturn;
import schemacrawler.tools.command.text.schema.options.SchemaTextOptionsBuilder;
import schemacrawler.tools.executable.SchemaCrawlerExecutable;
import schemacrawler.tools.options.Config;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,20 @@
* SPDX-License-Identifier: CC-BY-NC-4.0
*/

package schemacrawler.tools.ai.tools;
package schemacrawler.tools.ai.tools.base;

import static schemacrawler.tools.ai.utility.JsonUtility.mapper;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.PropertyNamingStrategies.KebabCaseStrategy;
import com.fasterxml.jackson.databind.node.ObjectNode;
import schemacrawler.tools.ai.tools.FunctionDefinition;
import schemacrawler.tools.ai.tools.FunctionParameters;

public abstract class AbstractFunctionDefinition<P extends FunctionParameters>
implements FunctionDefinition<P> {

private String toString;
private JsonNode definition;

@JsonIgnore
@Override
Expand All @@ -32,26 +35,18 @@ public final String getName() {

@Override
public String toString() {
buildToString();
return toString;
if (definition == null) {
definition = buildDefinition();
}
return definition.toPrettyString();
}

private void buildToString() {
if (toString != null) {
return;
}
private JsonNode buildDefinition() {
final ObjectNode objectNode = mapper.createObjectNode();

String parameters;
try {
final FunctionParameters parametersObject =
getParametersClass().getDeclaredConstructor().newInstance();
parameters = mapper.writeValueAsString(parametersObject);
} catch (final Exception e) {
parameters =
new KebabCaseStrategy()
.translate(getParametersClass().getSimpleName())
.replace("-function-parameters", "");
}
toString = String.format("function %s%n\"%s\"%n%s", getName(), getDescription(), parameters);
objectNode.put("name", getName());
objectNode.put("description", getDescription());

return objectNode;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* SPDX-License-Identifier: CC-BY-NC-4.0
*/

package schemacrawler.tools.ai.tools;
package schemacrawler.tools.ai.tools.base;

import static java.util.Objects.requireNonNull;
import static us.fatehi.utility.Utility.isBlank;
Expand All @@ -16,6 +16,9 @@
import schemacrawler.inclusionrule.InclusionRule;
import schemacrawler.inclusionrule.RegularExpressionInclusionRule;
import schemacrawler.schemacrawler.SchemaCrawlerOptions;
import schemacrawler.tools.ai.tools.FunctionExecutor;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.FunctionReturn;
import schemacrawler.tools.executable.BaseCommand;
import us.fatehi.utility.property.PropertyName;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@
* SPDX-License-Identifier: CC-BY-NC-4.0
*/

package schemacrawler.tools.ai.functions;
package schemacrawler.tools.ai.tools.base;

import schemacrawler.schemacrawler.SchemaCrawlerOptions;
import schemacrawler.tools.ai.tools.AbstractFunctionExecutor;
import schemacrawler.tools.ai.tools.FunctionParameters;
import schemacrawler.tools.ai.tools.JsonFunctionReturn;
import schemacrawler.utility.MetaDataUtility;
Expand Down
Loading