Skip to content
Open
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ai.chat2db.community.domain.api.exception.ai;

public class AiToolException extends RuntimeException {

protected AiToolException(String message) {
super(message);
}

protected AiToolException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ai.chat2db.community.domain.api.exception.ai;

public class AiToolInvalidArgumentException extends AiToolException {

public AiToolInvalidArgumentException(String message) {
super(message);
}

public AiToolInvalidArgumentException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ai.chat2db.community.domain.api.exception.ai;

public class AiToolMetadataQueryException extends AiToolException {

public AiToolMetadataQueryException(String message) {
super(message);
}

public AiToolMetadataQueryException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ai.chat2db.community.domain.api.exception.ai;

public class AiToolSqlConfirmationRequiredException extends AiToolException {

public AiToolSqlConfirmationRequiredException(String message) {
super(message);
}

public AiToolSqlConfirmationRequiredException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ai.chat2db.community.domain.api.exception.ai;

public class AiToolSqlExecutionException extends AiToolException {

public AiToolSqlExecutionException(String message) {
super(message);
}

public AiToolSqlExecutionException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package ai.chat2db.community.domain.api.model.ai;

import lombok.Data;

@Data
public class AiToolResult<T> {

private Boolean success;

private String summary;

private T data;

private String errorCode;

public static <T> AiToolResult<T> success(String summary, T data) {
AiToolResult<T> result = new AiToolResult<>();
result.setSuccess(Boolean.TRUE);
result.setSummary(summary);
result.setData(data);
return result;
}

public static <T> AiToolResult<T> failureWithCode(String errorCode, String summary) {
AiToolResult<T> result = new AiToolResult<>();
result.setSuccess(Boolean.FALSE);
result.setSummary(summary);
result.setErrorCode(errorCode);
return result;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ai.chat2db.community.domain.api.model.ai;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceToolData {

private List<Item> datasources = new ArrayList<>();

@Data
@NoArgsConstructor
@AllArgsConstructor
public static class Item {
private Long id;
private String name;
private String type;
private String env;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ai.chat2db.community.domain.api.model.ai;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class DatabaseToolData {

private List<Item> databases = new ArrayList<>();

@Data
@NoArgsConstructor
@AllArgsConstructor
public static class Item {
private String name;
private Boolean system;
private String comment;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ai.chat2db.community.domain.api.model.ai;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SchemaToolData {

private List<Item> schemas = new ArrayList<>();

@Data
@NoArgsConstructor
@AllArgsConstructor
public static class Item {
private String name;
private Boolean system;
private String comment;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package ai.chat2db.community.domain.api.model.ai;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SqlToolData {

private List<ResultSet> results = new ArrayList<>();

@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ResultSet {
private Integer resultIndex;
private Boolean success;
private String sqlType;
private Long durationMs;
private Integer updateCount;
private String message;
private String description;
private Boolean hasNextPage;
private Integer rowCount;
private Integer previewRowCount;
private Boolean rowsTruncated;
private List<String> columns = new ArrayList<>();
private List<List<Object>> rows = new ArrayList<>();
private List<List<CellMetadata>> rowCellMetadata = new ArrayList<>();
private String text;
}

@Data
@NoArgsConstructor
@AllArgsConstructor
public static class CellMetadata {
private Boolean rawValueAvailable;
private Object displayValue;
private Boolean largeValue;
private String largeValueId;
private String valueType;
private Integer sqlType;
private String columnType;
private Long sizeBytes;
private Long sizeChars;
private Long loadedBytes;
private Long loadedChars;
private Boolean truncated;
private String unsupportedReason;
private String rawValueUnavailableReason;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ai.chat2db.community.domain.api.model.ai;

import ai.chat2db.community.domain.api.model.metadata.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
* Typed service use-case result for table schema lookup.
* This is not an AI payload and must not contain JSON, summaries, display text, or transport envelopes.
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableSchemaResult {

private String tableName;

private String ddl;

private Table table;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package ai.chat2db.community.domain.api.model.ai;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableSchemaToolData {

private List<Item> tables = new ArrayList<>();

@Data
@NoArgsConstructor
@AllArgsConstructor
public static class Item {
private String tableName;
private String schema;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ai.chat2db.community.domain.api.model.ai;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableToolData {

private List<Item> tables = new ArrayList<>();

@Data
@NoArgsConstructor
@AllArgsConstructor
public static class Item {
private String name;
private String type;
private String comment;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ai.chat2db.community.domain.api.model.ai;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Text2SqlToolData {

private String sql;
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,14 @@ public Object getRawValue() {
return rawValue;
}

/**
* Builds a string-only cell where value is the display/serialized value and rawValue is the same stable
* string for structured AI/tool consumers that need lossless positional rows.
*/
public static ResultCell of(String value) {
return ResultCell.builder()
.value(value)
.rawValue(value)
.largeValue(false)
.truncated(false)
.valueType(LargeValueTypeEnum.UNKNOWN.code())
Expand Down
Loading