sources

package
v0.3.42 Latest Latest
Warning

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

Go to latest
Published: Jul 29, 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