handlers

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2025 License: GPL-3.0 Imports: 10 Imported by: 0

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

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL