sqlinspect

package
v0.1.34 Latest Latest
Warning

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

Go to latest
Published: Sep 11, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package sqlinspect provides reusable, read-only SQL catalog inspection.

Index

Constants

View Source
const (
	DefaultMaxRelations       = 5000
	DefaultMaxColumns         = 50000
	DefaultMaxRoutines        = 2000
	DefaultMaxDefinitionBytes = 4 * 1024 * 1024
)

Variables

This section is empty.

Functions

func ListDatabases

func ListDatabases(ctx context.Context, db *sql.DB, driver string) ([]string, error)

ListDatabases returns databases accessible to the current connection user.

Types

type Catalog

type Catalog struct {
	Driver         string                    `json:"driver"`
	Database       string                    `json:"database,omitempty"`
	Databases      []string                  `json:"databases,omitempty"`
	DefaultSchema  string                    `json:"defaultSchema,omitempty"`
	Schemas        []Schema                  `json:"schemas"`
	Truncated      bool                      `json:"truncated,omitempty"`
	TruncateReason string                    `json:"truncateReason,omitempty"`
	Cache          *inspection.CacheMetadata `json:"cache,omitempty"`
}

func Inspect

func Inspect(ctx context.Context, db *sql.DB, driver string, limits Limits) (Catalog, error)

Inspect returns the current database's schemas, relations and columns using set-based catalog queries. It deliberately does not inspect other databases on the same server. Schemas are queried independently so empty schemas remain visible to callers.

type Column

type Column struct {
	Name             string   `json:"name"`
	DataType         string   `json:"dataType,omitempty"`
	Ordinal          int      `json:"ordinal,omitempty"`
	Nullable         *bool    `json:"nullable,omitempty"`
	Default          *string  `json:"default,omitempty"`
	Identity         bool     `json:"identity,omitempty"`
	PrimaryKey       bool     `json:"primaryKey,omitempty"`
	Unique           bool     `json:"unique,omitempty"`
	MaxLength        *int     `json:"maxLength,omitempty"`
	NumericPrecision *int     `json:"numericPrecision,omitempty"`
	NumericScale     *int     `json:"numericScale,omitempty"`
	Comment          *string  `json:"comment,omitempty"`
	EnumValues       []string `json:"enumValues,omitempty"`
}

type ForeignKey added in v0.1.32

type ForeignKey struct {
	Name              string   `json:"name"`
	Columns           []string `json:"columns"`
	ReferencedSchema  string   `json:"referencedSchema,omitempty"`
	ReferencedTable   string   `json:"referencedTable"`
	ReferencedColumns []string `json:"referencedColumns"`
}

type Index added in v0.1.32

type Index struct {
	Name    string   `json:"name"`
	Unique  bool     `json:"unique,omitempty"`
	Primary bool     `json:"primary,omitempty"`
	Columns []string `json:"columns"`
	Type    string   `json:"type,omitempty"`
	Filter  string   `json:"filter,omitempty"`
}

type Limits

type Limits struct {
	MaxRelations       int
	MaxColumns         int
	MaxRoutines        int
	MaxDefinitionBytes int
}

type Relation

type Relation struct {
	Name        string       `json:"name"`
	Type        string       `json:"type"`
	ViewDef     string       `json:"viewDefinition,omitempty"`
	Columns     []Column     `json:"columns"`
	Indexes     []Index      `json:"indexes,omitempty"`
	ForeignKeys []ForeignKey `json:"foreignKeys,omitempty"`
	Triggers    []Trigger    `json:"triggers,omitempty"`
}

type Routine added in v0.1.32

type Routine struct {
	ID         string             `json:"id"`
	Name       string             `json:"name"`
	Type       string             `json:"type"`
	SQL        string             `json:"sql,omitempty"`
	ReturnType string             `json:"returnType,omitempty"`
	Parameters []RoutineParameter `json:"parameters,omitempty"`
}

type RoutineParameter added in v0.1.32

type RoutineParameter struct {
	Name     string `json:"name"`
	DataType string `json:"dataType,omitempty"`
	Ordinal  int    `json:"ordinal,omitempty"`
}

type Schema

type Schema struct {
	Name      string     `json:"name"`
	Relations []Relation `json:"relations"`
	Routines  []Routine  `json:"routines,omitempty"`
}

type Trigger added in v0.1.32

type Trigger struct {
	Name     string `json:"name"`
	Event    string `json:"event,omitempty"`
	Timing   string `json:"timing,omitempty"`
	Disabled bool   `json:"disabled,omitempty"`
	SQL      string `json:"sql,omitempty"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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