db

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package db provides database management functionality for the SQLite MCP server.

The package handles database registration, connection pooling, and query execution for multiple SQLite databases. It includes the following main components:

  • Manager: Handles database connections and pooling
  • Registry: Manages database registration and metadata
  • Batch: Provides batch operation support

Example usage:

// Create a new registry
registry, err := db.NewRegistry("registry.db")
if err != nil {
    log.Fatal(err)
}

// Create database manager
manager := db.NewManager(registry)

// Register a database
info := &db.DatabaseInfo{
    Name: "mydb",
    Path: "/path/to/db.sqlite",
    Status: "active",
}
err = registry.RegisterDatabase(info)

// Execute a query
rows, err := manager.ExecuteQuery("mydb", "SELECT * FROM users WHERE id = ?", 1)

The package also supports batch operations and bulk inserts for efficient data manipulation.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BatchOperation

type BatchOperation struct {
	Database string        `json:"database"`
	Query    string        `json:"query"`
	Args     []interface{} `json:"args"`
}

type BatchResult

type BatchResult struct {
	Database string      `json:"database"`
	Success  bool        `json:"success"`
	Results  interface{} `json:"results,omitempty"`
	Error    string      `json:"error,omitempty"`
}

type BulkInsertOperation

type BulkInsertOperation struct {
	Database   string          `json:"database"`
	Table      string          `json:"table"`
	Columns    []string        `json:"columns"`
	Values     [][]interface{} `json:"values"`
	OnConflict string          `json:"on_conflict,omitempty"`
}

type DatabaseInfo

type DatabaseInfo struct {
	ID           string     `json:"id"`
	Name         string     `json:"name"`
	Path         string     `json:"path"`
	Description  string     `json:"description"`
	ReadOnly     bool       `json:"readonly"`
	CreatedAt    time.Time  `json:"created_at"`
	LastAccessed *time.Time `json:"last_accessed,omitempty"`
	Owner        string     `json:"owner"`
	Status       string     `json:"status"`
}

type Manager

type Manager struct {
	Registry *Registry // Exported for API handlers
	// contains filtered or unexported fields
}

func NewManager

func NewManager(registry *Registry) *Manager

func (*Manager) BulkInsert

func (m *Manager) BulkInsert(ctx context.Context, operation BulkInsertOperation) (int64, error)

func (*Manager) CloseAll

func (m *Manager) CloseAll() error

func (*Manager) CloseConnection

func (m *Manager) CloseConnection(name string) error

func (*Manager) ExecuteBatch

func (m *Manager) ExecuteBatch(ctx context.Context, operations []BatchOperation) []BatchResult

func (*Manager) ExecuteQuery

func (m *Manager) ExecuteQuery(name string, query string, args ...interface{}) (*sql.Rows, error)

func (*Manager) ExecuteUpdate

func (m *Manager) ExecuteUpdate(name string, query string, args ...interface{}) (sql.Result, error)

func (*Manager) GetConnection

func (m *Manager) GetConnection(name string) (*sql.DB, error)

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

func NewRegistry

func NewRegistry(path string) (*Registry, error)

func (*Registry) Close

func (r *Registry) Close() error

func (*Registry) GetDatabase

func (r *Registry) GetDatabase(name string) (*DatabaseInfo, error)

func (*Registry) ListDatabases

func (r *Registry) ListDatabases() ([]DatabaseInfo, error)

func (*Registry) RegisterDatabase

func (r *Registry) RegisterDatabase(info *DatabaseInfo) error

func (*Registry) UpdateLastAccessed

func (r *Registry) UpdateLastAccessed(id string) error

Jump to

Keyboard shortcuts

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