Help us shape the future of Go! Take the 2026 Go Developer Survey

sources

package
v0.3.45 Latest Latest
Warning

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

Go to latest
Published: Oct 9, 2026 License: MIT Imports: 18 Imported by: 1

Documentation

Index

Constants

View Source
const (
	FileSourceType    types.CatalogSourceType = "localFS"
	URISourceType     types.CatalogSourceType = "uri"
	URIFileSourceType types.CatalogSourceType = "uriFile"
	TextSourceType    types.CatalogSourceType = "text"
)

Variables

View Source
var ErrNoSourcesByURI = errors.New("no sources found by URI")

Functions

This section is empty.

Types

type Catalog

type Catalog interface {
	ingest.Catalog

	Name() string
	Description() string
	// Version returns a version identifier for the catalog contents.
	// For file-based sources, this is a content hash (changes when files change).
	// For dynamic sources (URI, DB, HTTP), this is a timestamp (always recompiles).
	// For runtime sources, this is an embedded version constant.
	Version(ctx context.Context) (string, error)
	Engine() engines.Engine
}

type DBColumnInfo

type DBColumnInfo struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	DataType    string `json:"data_type"`
	IsNullable  bool   `json:"is_nullable"`
	Default     string `json:"default,omitempty"`
}

func (*DBColumnInfo) Definition

func (c *DBColumnInfo) Definition() (*ast.FieldDefinition, error)

type DBConstraintInfo

type DBConstraintInfo struct {
	Name              string   `json:"name"`
	Type              string   `json:"type"`                             // e.g., PRIMARY KEY, FOREIGN KEY, UNIQUE
	Columns           []string `json:"columns"`                          // list of column names involved in the constraint
	ReferencesSchema  string   `json:"references_schema_name,omitempty"` // for foreign keys, the schema of the referenced table
	ReferencesTable   string   `json:"references_table_name,omitempty"`  // for foreign keys
	ReferencesColumns []string `json:"references_columns,omitempty"`     // columns in the referenced table
}

type DBInfo

type DBInfo struct {
	InfoName   string         `json:"name"`
	InfoDesc   string         `json:"description"`
	Type       string         `json:"type"` // e.g., "mysql", "postgres", "duckdb", "memory", etc.
	SchemaInfo []DBSchemaInfo `json:"schemas"`

	// DefaultSchema is the schema the data source connection is scoped to
	// (e.g. the database from a MySQL connection string). Objects in it are
	// exposed without a schema module and without a schema prefix in type
	// names, the same way as "public" (PostgreSQL) and "main" (DuckDB).
	DefaultSchema string `json:"default_schema,omitempty"`
	// contains filtered or unexported fields
}

DBInfo holds database introspection results and implements catalog.Catalog directly. Call Build() after deserialization to initialize the catalog provider.

func DescribeDataSource

func DescribeDataSource(ctx context.Context, qe types.Querier, name string) (*DBInfo, error)

func (*DBInfo) Build

func (s *DBInfo) Build(ctx context.Context, engine engines.Engine, opts base.Options) error

Build initializes DBInfo as a Catalog from its introspected schema info.

func (*DBInfo) CompileOptions

func (s *DBInfo) CompileOptions() base.Options

func (*DBInfo) DefinitionExtensions

func (s *DBInfo) DefinitionExtensions(ctx context.Context, name string) iter.Seq[*ast.Definition]

func (*DBInfo) Definitions

func (s *DBInfo) Definitions(ctx context.Context) iter.Seq[*ast.Definition]

func (*DBInfo) Description

func (s *DBInfo) Description() string

func (*DBInfo) DirectiveDefinitions

func (s *DBInfo) DirectiveDefinitions(ctx context.Context) iter.Seq2[string, *ast.DirectiveDefinition]

func (*DBInfo) DirectiveForName

func (s *DBInfo) DirectiveForName(ctx context.Context, name string) *ast.DirectiveDefinition

func (*DBInfo) Engine

func (s *DBInfo) Engine() engines.Engine

func (*DBInfo) Extensions

func (s *DBInfo) Extensions(ctx context.Context) iter.Seq[*ast.Definition]

func (*DBInfo) ForName

func (s *DBInfo) ForName(ctx context.Context, name string) *ast.Definition

func (*DBInfo) Name

func (s *DBInfo) Name() string

func (*DBInfo) Version

func (s *DBInfo) Version(_ context.Context) (string, error)

type DBSchemaInfo

type DBSchemaInfo struct {
	Name        string        `json:"name"`
	Description string        `json:"description"`
	Tables      []DBTableInfo `json:"tables"`
	Views       []DBViewInfo  `json:"views"`
}

func (*DBSchemaInfo) Definitions

func (s *DBSchemaInfo) Definitions(defaultSchema string) (ast.DefinitionList, error)

type DBTableInfo

type DBTableInfo struct {
	Name        string             `json:"name"`
	Description string             `json:"description"`
	SchemaName  string             `json:"schema_name"`
	Columns     []DBColumnInfo     `json:"columns"`
	Constraints []DBConstraintInfo `json:"constraints"`
}

func (*DBTableInfo) Definition

func (t *DBTableInfo) Definition(defaultSchema string) (*ast.Definition, error)

type DBViewInfo

type DBViewInfo struct {
	Name        string         `json:"name"`
	SchemaName  string         `json:"schema_name"`
	Description string         `json:"description"`
	Columns     []DBColumnInfo `json:"columns"`
}

func (*DBViewInfo) Definition

func (v *DBViewInfo) Definition(defaultSchema string) (*ast.Definition, error)

type ExtensionCatalog

type ExtensionCatalog interface {
	Catalog

	base.ExtensionsSource
	Deps() []string // Names of other catalog extensions this extension depends on
}

type FileSource

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

func NewFileSource

func NewFileSource(dirPath string, engine engines.Engine, opts base.Options) *FileSource

func (*FileSource) CompileOptions

func (s *FileSource) CompileOptions() base.Options

func (*FileSource) DefinitionExtensions

func (s *FileSource) DefinitionExtensions(ctx context.Context, name string) iter.Seq[*ast.Definition]

func (*FileSource) Definitions

func (s *FileSource) Definitions(ctx context.Context) iter.Seq[*ast.Definition]

func (*FileSource) Description

func (s *FileSource) Description() string

func (*FileSource) DirectiveDefinitions

func (s *FileSource) DirectiveDefinitions(ctx context.Context) iter.Seq2[string, *ast.DirectiveDefinition]

func (*FileSource) DirectiveForName

func (s *FileSource) DirectiveForName(ctx context.Context, name string) *ast.DirectiveDefinition

func (*FileSource) Engine

func (s *FileSource) Engine() engines.Engine

func (*FileSource) Extensions

func (s *FileSource) Extensions(ctx context.Context) iter.Seq[*ast.Definition]

func (*FileSource) ForName

func (s *FileSource) ForName(ctx context.Context, name string) *ast.Definition

func (*FileSource) Name

func (s *FileSource) Name() string

func (*FileSource) Reload

func (s *FileSource) Reload(_ context.Context) error

func (*FileSource) Version

func (s *FileSource) Version(_ context.Context) (string, error)

type MergedCatalog

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

MergedCatalog combines multiple Catalogs into a single Catalog. Definitions are merged from all sub-catalogs.

func NewMergedCatalog

func NewMergedCatalog(engine engines.Engine, opts base.Options, desc string, catalogs ...Catalog) *MergedCatalog

func (*MergedCatalog) CompileOptions

func (mc *MergedCatalog) CompileOptions() base.Options

func (*MergedCatalog) DefinitionExtensions

func (mc *MergedCatalog) DefinitionExtensions(ctx context.Context, name string) iter.Seq[*ast.Definition]

func (*MergedCatalog) Definitions

func (mc *MergedCatalog) Definitions(ctx context.Context) iter.Seq[*ast.Definition]

func (*MergedCatalog) Description

func (mc *MergedCatalog) Description() string

func (*MergedCatalog) DirectiveDefinitions

func (mc *MergedCatalog) DirectiveDefinitions(ctx context.Context) iter.Seq2[string, *ast.DirectiveDefinition]

func (*MergedCatalog) DirectiveForName

func (mc *MergedCatalog) DirectiveForName(ctx context.Context, name string) *ast.DirectiveDefinition

func (*MergedCatalog) Engine

func (mc *MergedCatalog) Engine() engines.Engine

func (*MergedCatalog) Extensions

func (mc *MergedCatalog) Extensions(ctx context.Context) iter.Seq[*ast.Definition]

func (*MergedCatalog) ForName

func (mc *MergedCatalog) ForName(ctx context.Context, name string) *ast.Definition

func (*MergedCatalog) Name

func (mc *MergedCatalog) Name() string

func (*MergedCatalog) Reload

func (mc *MergedCatalog) Reload(ctx context.Context) error

func (*MergedCatalog) Version

func (mc *MergedCatalog) Version(ctx context.Context) (string, error)

type ReloadableCatalog

type ReloadableCatalog interface {
	Catalog

	// Reload the catalog (e.g. after source changes). Returns an error if reloading fails.
	Reload(ctx context.Context) error
}

type StringSource

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

func NewStringSource

func NewStringSource(name string, engine engines.Engine, opts base.Options, sources ...string) (*StringSource, error)

func (*StringSource) CompileOptions

func (s *StringSource) CompileOptions() base.Options

func (*StringSource) DefinitionExtensions

func (s *StringSource) DefinitionExtensions(ctx context.Context, name string) iter.Seq[*ast.Definition]

func (*StringSource) Definitions

func (s *StringSource) Definitions(ctx context.Context) iter.Seq[*ast.Definition]

func (*StringSource) Description

func (s *StringSource) Description() string

func (*StringSource) DirectiveDefinitions

func (s *StringSource) DirectiveDefinitions(ctx context.Context) iter.Seq2[string, *ast.DirectiveDefinition]

func (*StringSource) DirectiveForName

func (s *StringSource) DirectiveForName(ctx context.Context, name string) *ast.DirectiveDefinition

func (*StringSource) Engine

func (s *StringSource) Engine() engines.Engine

func (*StringSource) Extensions

func (s *StringSource) Extensions(ctx context.Context) iter.Seq[*ast.Definition]

func (*StringSource) ForName

func (s *StringSource) ForName(ctx context.Context, name string) *ast.Definition

func (*StringSource) Name

func (s *StringSource) Name() string

func (*StringSource) Version

func (s *StringSource) Version(_ context.Context) (string, error)

type URISource

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

func NewURISource

func NewURISource(pool *db.Pool, path string, isFile bool, engine engines.Engine, opts base.Options) *URISource

func (*URISource) CompileOptions

func (s *URISource) CompileOptions() base.Options

func (*URISource) DefinitionExtensions

func (s *URISource) DefinitionExtensions(ctx context.Context, name string) iter.Seq[*ast.Definition]

func (*URISource) Definitions

func (s *URISource) Definitions(ctx context.Context) iter.Seq[*ast.Definition]

func (*URISource) Description

func (s *URISource) Description() string

func (*URISource) DirectiveDefinitions

func (s *URISource) DirectiveDefinitions(ctx context.Context) iter.Seq2[string, *ast.DirectiveDefinition]

func (*URISource) DirectiveForName

func (s *URISource) DirectiveForName(ctx context.Context, name string) *ast.DirectiveDefinition

func (*URISource) Engine

func (s *URISource) Engine() engines.Engine

func (*URISource) Extensions

func (s *URISource) Extensions(ctx context.Context) iter.Seq[*ast.Definition]

func (*URISource) ForName

func (s *URISource) ForName(ctx context.Context, name string) *ast.Definition

func (*URISource) Name

func (s *URISource) Name() string

func (*URISource) Reload

func (s *URISource) Reload(ctx context.Context) error

func (*URISource) Version

func (s *URISource) Version(_ context.Context) (string, error)

Jump to

Keyboard shortcuts

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