Documentation
¶
Overview ¶
Package handlers provides MCP tool handlers for database operations.
Package handlers provides MCP tool handlers for database operations.
Package handlers provides MCP tool handlers for database operations.
Index ¶
- type AdminHandler
- type ConnectionInfo
- type DatabasesResult
- type ExplainResult
- type QueryHandler
- type QueryResult
- type SchemaHandler
- func (h *SchemaHandler) DescribeTable(ctx context.Context, tableName string) (*TableSchemaResult, error)
- func (h *SchemaHandler) ExplainQuery(ctx context.Context, query string) (*ExplainResult, error)
- func (h *SchemaHandler) GetTableData(ctx context.Context, tableName string, limit int, offset int) (*TableDataResult, error)
- func (h *SchemaHandler) GetTableStatistics(ctx context.Context, tableName string) (map[string]any, error)
- func (h *SchemaHandler) ListDatabases(ctx context.Context) (*DatabasesResult, error)
- func (h *SchemaHandler) ListTables(ctx context.Context) (*TablesResult, error)
- func (h *SchemaHandler) ValidateTableName(tableName string) error
- type TableDataResult
- type TableSchemaResult
- type TablesResult
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminHandler ¶
type AdminHandler struct {
// contains filtered or unexported fields
}
AdminHandler handles database administrative operations.
func NewAdminHandler ¶
func NewAdminHandler(db database.Database) *AdminHandler
NewAdminHandler creates a new AdminHandler instance.
func (*AdminHandler) GetConnectionInfo ¶
func (h *AdminHandler) GetConnectionInfo(ctx context.Context) (*ConnectionInfo, error)
GetConnectionInfo retrieves information about the current database connection.
type ConnectionInfo ¶
type ConnectionInfo struct {
Driver string `json:"driver"` // Database driver name
Connected bool `json:"connected"` // Whether currently connected
PingTime string `json:"ping_time"` // Time taken to ping database
}
ConnectionInfo represents database connection information.
type DatabasesResult ¶
type DatabasesResult struct {
Databases []string `json:"databases"` // List of database names
Count int `json:"count"` // Number of databases
}
DatabasesResult represents the result of listing databases.
type ExplainResult ¶
type ExplainResult struct {
Query string `json:"query"` // The original query
Plan string `json:"plan"` // Query execution plan (JSON format)
}
ExplainResult represents the result of explaining a query.
type QueryHandler ¶
type QueryHandler struct {
// contains filtered or unexported fields
}
QueryHandler handles SQL query execution tools.
func NewQueryHandler ¶
func NewQueryHandler(db database.Database, config *config.DatabaseConfig) *QueryHandler
NewQueryHandler creates a new QueryHandler instance.
func (*QueryHandler) ExecuteQuery ¶
func (h *QueryHandler) ExecuteQuery(ctx context.Context, query string, args ...any) (*QueryResult, error)
ExecuteQuery executes a SQL query and returns formatted results. It supports both SELECT queries (which return data) and non-SELECT queries (INSERT, UPDATE, DELETE, DDL).
func (*QueryHandler) FormatResult ¶
func (h *QueryHandler) FormatResult(result QueryResult, format string) (string, error)
FormatResult formats the query result in the specified format.
func (*QueryHandler) ValidateQuery ¶
func (h *QueryHandler) ValidateQuery(query string) error
ValidateQuery performs basic validation on SQL queries to prevent dangerous operations.
type QueryResult ¶
type QueryResult struct {
Type string `json:"type"` // Query type: select, insert, update, delete, ddl
Columns []string `json:"columns,omitempty"` // Column names for SELECT queries
Rows []map[string]any `json:"rows,omitempty"` // Result rows for SELECT queries
RowCount int `json:"row_count"` // Number of rows returned (SELECT) or affected (INSERT/UPDATE/DELETE)
RowsAffected int64 `json:"rows_affected,omitempty"` // Number of rows affected by the query
LastInsertID *int64 `json:"last_insert_id,omitempty"` // Last insert ID for INSERT queries
ExecutionTime string `json:"execution_time,omitempty"` // Query execution time
Message string `json:"message,omitempty"` // Success/info message
}
QueryResult represents the result of a SQL query execution.
type SchemaHandler ¶
type SchemaHandler struct {
// contains filtered or unexported fields
}
SchemaHandler handles database schema inspection tools.
func NewSchemaHandler ¶
func NewSchemaHandler(db database.Database, config *config.DatabaseConfig) *SchemaHandler
NewSchemaHandler creates a new SchemaHandler instance.
func (*SchemaHandler) DescribeTable ¶
func (h *SchemaHandler) DescribeTable(ctx context.Context, tableName string) (*TableSchemaResult, error)
DescribeTable retrieves detailed schema information about a specific table.
func (*SchemaHandler) ExplainQuery ¶
func (h *SchemaHandler) ExplainQuery(ctx context.Context, query string) (*ExplainResult, error)
ExplainQuery retrieves the execution plan for a SQL query.
func (*SchemaHandler) GetTableData ¶
func (h *SchemaHandler) GetTableData(ctx context.Context, tableName string, limit int, offset int) (*TableDataResult, error)
GetTableData retrieves paginated data from a specific table.
func (*SchemaHandler) GetTableStatistics ¶
func (h *SchemaHandler) GetTableStatistics(ctx context.Context, tableName string) (map[string]any, error)
GetTableStatistics provides statistical information about a table (if available).
func (*SchemaHandler) ListDatabases ¶
func (h *SchemaHandler) ListDatabases(ctx context.Context) (*DatabasesResult, error)
ListDatabases retrieves all available database names on the server. Only returns databases that are allowed by the configuration.
func (*SchemaHandler) ListTables ¶
func (h *SchemaHandler) ListTables(ctx context.Context) (*TablesResult, error)
ListTables retrieves all table names from the current database.
func (*SchemaHandler) ValidateTableName ¶
func (h *SchemaHandler) ValidateTableName(tableName string) error
ValidateTableName performs basic validation on table names to prevent SQL injection.
type TableDataResult ¶
type TableDataResult struct {
Data *database.TableData `json:"data"` // Table data with pagination info
}
TableDataResult represents the result of getting table data.
type TableSchemaResult ¶
type TableSchemaResult struct {
Schema *database.TableSchema `json:"schema"` // Complete table schema
}
TableSchemaResult represents the result of describing a table.
type TablesResult ¶
type TablesResult struct {
Tables []string `json:"tables"` // List of table names
Count int `json:"count"` // Number of tables
}
TablesResult represents the result of listing tables.