metadata

package
v1.21.0 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2024 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Overview

Package metadata provides access to databases and collections information.

Index

Constants

View Source
const (
	// DefaultColumn is a column name for all fields.
	DefaultColumn = "_jsonb"

	// IDColumn is a PostgreSQL path expression for _id field.
	IDColumn = DefaultColumn + "->'_id'"

	// RecordIDColumn is a name for RecordID column to store capped collection record id.
	RecordIDColumn = backends.ReservedPrefix + "record_id"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Collection

type Collection struct {
	Name            string
	UUID            string
	TableName       string
	Indexes         Indexes
	CappedSize      int64
	CappedDocuments int64
}

Collection represents collection metadata.

Collection value should be immutable to avoid data races. Use [deepCopy] to replace the whole value instead of modifying fields of existing value.

func (Collection) Capped added in v1.14.0

func (c Collection) Capped() bool

Capped returns true if collection is capped.

func (*Collection) Scan added in v1.12.0

func (c *Collection) Scan(src any) error

Scan implements sql.Scanner interface.

func (Collection) Value added in v1.12.0

func (c Collection) Value() (driver.Value, error)

Value implements driver.Valuer interface.

type CollectionCreateParams added in v1.14.0

type CollectionCreateParams struct {
	DBName          string
	Name            string
	CappedSize      int64
	CappedDocuments int64
	// contains filtered or unexported fields
}

CollectionCreateParams contains parameters for CollectionCreate.

func (*CollectionCreateParams) Capped added in v1.14.0

func (ccp *CollectionCreateParams) Capped() bool

Capped returns true if capped collection creation is requested.

type IndexInfo added in v1.12.0

type IndexInfo struct {
	Name    string
	PgIndex string
	Key     []IndexKeyPair
	Unique  bool
}

IndexInfo represents information about a single index.

type IndexKeyPair added in v1.12.0

type IndexKeyPair struct {
	Field      string
	Descending bool
}

IndexKeyPair consists of a field name and a sort order that are part of the index.

type Indexes added in v1.12.0

type Indexes []IndexInfo

Indexes represents information about all indexes in a collection.

type Placeholder added in v1.12.0

type Placeholder int

Placeholder stores the number of the relevant placeholder of the query.

func (*Placeholder) Next added in v1.12.0

func (p *Placeholder) Next() string

Next increases the identifier value for the next variable in the PostgreSQL query.

type Registry

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

Registry provides access to PostgreSQL databases and collections information.

Exported methods and [getPool] are safe for concurrent use. Other unexported methods are not.

All methods should call [getPool] to check authentication. There is no authorization yet – if username/password combination is correct, all databases and collections are visible as far as Registry is concerned.

Registry metadata is loaded upon first call by client, using conninfo in the context of the client.

func NewRegistry

func NewRegistry(u string, batchSize int, l *zap.Logger, sp *state.Provider) (*Registry, error)

NewRegistry creates a registry for PostgreSQL databases with a given base URI.

func (*Registry) Close

func (r *Registry) Close()

Close closes the registry.

func (*Registry) Collect added in v1.11.0

func (r *Registry) Collect(ch chan<- prometheus.Metric)

Collect implements prometheus.Collector.

func (*Registry) CollectionCreate added in v1.11.0

func (r *Registry) CollectionCreate(ctx context.Context, params *CollectionCreateParams) (bool, error)

CollectionCreate creates a collection in the database. Database will be created automatically if needed.

Returned boolean value indicates whether the collection was created. If collection already exists, (false, nil) is returned.

If the user is not authenticated, it returns error.

func (*Registry) CollectionDrop added in v1.11.0

func (r *Registry) CollectionDrop(ctx context.Context, dbName, collectionName string) (bool, error)

CollectionDrop drops a collection in the database.

Returned boolean value indicates whether the collection was dropped. If database or collection did not exist, (false, nil) is returned.

If the user is not authenticated, it returns error.

func (*Registry) CollectionGet added in v1.11.0

func (r *Registry) CollectionGet(ctx context.Context, dbName, collectionName string) (*Collection, error)

CollectionGet returns a copy of collection metadata. It can be safely modified by a caller.

If database or collection does not exist, nil is returned.

If the user is not authenticated, it returns error.

func (*Registry) CollectionList added in v1.11.0

func (r *Registry) CollectionList(ctx context.Context, dbName string) ([]*Collection, error)

CollectionList returns a sorted copy of collections in the database.

If database does not exist, no error is returned.

If the user is not authenticated, it returns error.

func (*Registry) CollectionRename added in v1.11.0

func (r *Registry) CollectionRename(ctx context.Context, dbName, oldCollectionName, newCollectionName string) (bool, error)

CollectionRename renames a collection in the database.

The collection name is updated, but original table name is kept.

Returned boolean value indicates whether the collection was renamed. If database or collection did not exist, (false, nil) is returned.

If the user is not authenticated, it returns error.

func (*Registry) DatabaseDrop added in v1.11.0

func (r *Registry) DatabaseDrop(ctx context.Context, dbName string) (bool, error)

DatabaseDrop drops the database.

Returned boolean value indicates whether the database was dropped. If database does not exist, (false, nil) is returned.

If the user is not authenticated, it returns error.

func (*Registry) DatabaseGetExisting added in v1.11.0

func (r *Registry) DatabaseGetExisting(ctx context.Context, dbName string) (*pgxpool.Pool, error)

DatabaseGetExisting returns a connection to existing database or nil if it doesn't exist.

If the user is not authenticated, it returns error.

func (*Registry) DatabaseGetOrCreate added in v1.11.0

func (r *Registry) DatabaseGetOrCreate(ctx context.Context, dbName string) (*pgxpool.Pool, error)

DatabaseGetOrCreate returns a connection to existing database or newly created database.

The dbName must be a validated database name.

If the user is not authenticated, it returns error.

func (*Registry) DatabaseList

func (r *Registry) DatabaseList(ctx context.Context) ([]string, error)

DatabaseList returns a sorted list of existing databases.

If the user is not authenticated, it returns error.

func (*Registry) Describe added in v1.11.0

func (r *Registry) Describe(ch chan<- *prometheus.Desc)

Describe implements prometheus.Collector.

func (*Registry) IndexesCreate added in v1.12.0

func (r *Registry) IndexesCreate(ctx context.Context, dbName, collectionName string, indexes []IndexInfo) error

IndexesCreate creates indexes in the collection.

Existing indexes with given names are ignored.

If the user is not authenticated, it returns error.

func (*Registry) IndexesDrop added in v1.12.0

func (r *Registry) IndexesDrop(ctx context.Context, dbName, collectionName string, indexNames []string) error

IndexesDrop removes given connection's indexes.

Non-existing indexes are ignored.

If database or collection does not exist, nil is returned.

If the user is not authenticated, it returns error.

Directories

Path Synopsis
Package pool provides access to PostgreSQL connections.
Package pool provides access to PostgreSQL connections.

Jump to

Keyboard shortcuts

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