metadata

package
v0.48.3 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2024 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package metadata contains types that model source metadata.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Column

type Column struct {
	Name         string    `json:"name" yaml:"name"`
	Position     int64     `json:"position" yaml:"position"`
	PrimaryKey   bool      `json:"primary_key" yaml:"primary_key"`
	BaseType     string    `json:"base_type" yaml:"base_type"`
	ColumnType   string    `json:"column_type" yaml:"column_type"`
	Kind         kind.Kind `json:"kind" yaml:"kind"`
	Nullable     bool      `json:"nullable" yaml:"nullable"`
	DefaultValue string    `json:"default_value,omitempty" yaml:"default_value,omitempty"`
	Comment      string    `json:"comment,omitempty" yaml:"comment,omitempty"`
}

Column models metadata for a particular column of a data source.

func (*Column) Clone

func (c *Column) Clone() *Column

Clone returns a deep copy of c. If c is nil, nil is returned.

func (*Column) String

func (c *Column) String() string

String returns a log/debug friendly representation.

type Schema

type Schema struct {
	// Name is the schema name, such as "public".
	Name string `json:"schema" yaml:"schema"`

	// Catalog is the catalog name, such as "sakila".
	Catalog string `json:"catalog" yaml:"catalog"`

	// Owner is the schema owner, such as "alice".
	Owner string `json:"owner,omitempty" yaml:"owner,omitempty"`
}

Schema models metadata for a schema.

func (*Schema) Clone

func (s *Schema) Clone() *Schema

Clone returns a deep copy of s. If s is nil, nil is returned.

func (*Schema) LogValue

func (s *Schema) LogValue() slog.Value

LogValue implements slog.LogValuer.

type Source

type Source struct {
	// Handle is the source handle.
	Handle string `json:"handle" yaml:"handle"`

	// Location is the source location such as a DB connection string,
	// a file path, or a URL.
	Location string `json:"location" yaml:"location"`

	// Name is the base name of the source, e.g. the base filename
	// or DB name etc. For example, "sakila".
	Name string `json:"name" yaml:"name"`

	// FQName is the full name of the data source, typically
	// including catalog/schema etc. For example, "sakila.public"
	FQName string `json:"name_fq" yaml:"name_fq"`

	// Schema is the schema name, for example "public".
	// This may be empty for some sources.
	Schema string `json:"schema,omitempty" yaml:"schema,omitempty"`

	// Catalog is the catalog name, for example "sakila".
	Catalog string `json:"catalog,omitempty" yaml:"catalog,omitempty"`

	// Driver is the source driver type.
	Driver drivertype.Type `json:"driver" yaml:"driver"`

	// DBDriver is the type of the underling DB driver.
	// This is the same value as Driver for SQL database types.
	DBDriver drivertype.Type `json:"db_driver" yaml:"db_driver"`

	// DBProduct is the DB product string, such as "PostgreSQL 9.6.17 on x86_64-pc-linux-gnu".
	DBProduct string `json:"db_product" yaml:"db_product"`

	// DBVersion is the DB version.
	DBVersion string `json:"db_version" yaml:"db_version"`

	// User is the username, if applicable.
	User string `json:"user,omitempty" yaml:"user,omitempty"`

	// Size is the physical size of the source in bytes, e.g. DB file size.
	Size int64 `json:"size" yaml:"size"`

	// TableCount is the count of tables (excluding views).
	TableCount int64 `json:"table_count" yaml:"table_count"`

	// ViewCount is the count of views.
	ViewCount int64 `json:"view_count" yaml:"view_count"`

	// Tables is the metadata for each table/view in the source.
	Tables []*Table `json:"tables" yaml:"tables"`

	// DBProperties are name-value pairs from the DB.
	// Typically the value is a scalar such as integer or string, but
	// it can be a nested value such as map or array.
	DBProperties map[string]any `json:"db_properties,omitempty" yaml:"db_properties,omitempty"`
}

Source holds metadata for a source.

func (*Source) Clone

func (s *Source) Clone() *Source

Clone returns a deep copy of md. If md is nil, nil is returned.

func (*Source) String

func (s *Source) String() string

String returns a log/debug friendly representation.

func (*Source) Table

func (s *Source) Table(tblName string) *Table

Table returns the named table, or nil.

func (*Source) TableNames

func (s *Source) TableNames() []string

TableNames is a convenience method that returns md's table names.

type Table

type Table struct {
	// Name is the table name, such as "actor".
	Name string `json:"name" yaml:"name"`

	// FQName is the fully-qualified name, such as "sakila.public.actor"
	FQName string `json:"name_fq,omitempty" yaml:"name_fq,omitempty"`

	// TableType indicates if this is a "table" or "view". The value
	// is driver-independent. See DBTableType for the driver-dependent
	// value.
	TableType string `json:"table_type,omitempty" yaml:"table_type,omitempty"`

	// DBTableType indicates if this is a table or view, etc.
	// The value is driver-dependent, e.g. "BASE TABLE" or "VIEW" for postgres.
	DBTableType string `json:"table_type_db,omitempty" yaml:"table_type_db,omitempty"`

	// RowCount is the number of rows in the table.
	RowCount int64 `json:"row_count" yaml:"row_count"`

	// Size is the physical size of the table in bytes. For a view, this
	// may be nil.
	Size *int64 `json:"size,omitempty" yaml:"size,omitempty"`

	// Comment is the comment for the table. Typically empty.
	Comment string `json:"comment,omitempty" yaml:"comment,omitempty"`

	// Columns holds the metadata for the table's columns.
	Columns []*Column `json:"columns" yaml:"columns"`
}

Table models table (or view) metadata.

func (*Table) Clone

func (t *Table) Clone() *Table

Clone returns a deep copy of t. If t is nil, nil is returned.

func (*Table) Column

func (t *Table) Column(colName string) *Column

Column returns the named col or nil.

func (*Table) PKCols

func (t *Table) PKCols() []*Column

PKCols returns a possibly empty slice of cols that are part of the table primary key.

func (*Table) String

func (t *Table) String() string

String returns a log/debug friendly representation.

Jump to

Keyboard shortcuts

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