postgres

package
v0.15.1 Latest Latest
Warning

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

Go to latest
Published: Nov 29, 2024 License: Apache-2.0 Imports: 13 Imported by: 2

Documentation

Overview

Package postgres contains the domain concept definitions needed to support Magistrala PostgreSQL database functionality.

It provides the abstraction of the PostgreSQL database service, which is used to configure, setup and connect to the PostgreSQL database.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Connect

func Connect(cfg Config) (*sqlx.DB, error)

Connect creates a connection to the PostgreSQL instance.

For example:

db, err := postgres.Connect(postgres.Config{})

func CreateMetadataQuery

func CreateMetadataQuery(entity string, um map[string]interface{}) (string, []byte, error)

CreateMetadataQuery creates a query to filter by metadata.

For example:

query, param, err := CreateMetadataQuery("", map[string]interface{}{
	"key": "value",
})

func HandleError

func HandleError(wrapper, err error) error

HandleError handles the error and returns a wrapped error. It checks the error code and returns a specific error.

func Setup

func Setup(cfg Config, migrations migrate.MemoryMigrationSource) (*sqlx.DB, error)

Setup creates a connection to the PostgreSQL instance and applies any unapplied database migrations. A non-nil error is returned to indicate failure.

For example:

db, err := postgres.Setup(postgres.Config{}, migrate.MemoryMigrationSource{})

func Total

func Total(ctx context.Context, db Database, query string, params interface{}) (uint64, error)

Total returns the total number of rows.

For example:

total, err := Total(ctx, db, "SELECT COUNT(*) FROM table", nil)

Types

type Config

type Config struct {
	Host        string `env:"HOST"           envDefault:"localhost"`
	Port        string `env:"PORT"           envDefault:"5432"`
	User        string `env:"USER"           envDefault:"magistrala"`
	Pass        string `env:"PASS"           envDefault:"magistrala"`
	Name        string `env:"NAME"           envDefault:""`
	SSLMode     string `env:"SSL_MODE"       envDefault:"disable"`
	SSLCert     string `env:"SSL_CERT"       envDefault:""`
	SSLKey      string `env:"SSL_KEY"        envDefault:""`
	SSLRootCert string `env:"SSL_ROOT_CERT"  envDefault:""`
}

type Database

type Database interface {
	// NamedQueryContext executes a named query against the database and returns
	NamedQueryContext(context.Context, string, interface{}) (*sqlx.Rows, error)

	// NamedExecContext executes a named query against the database and returns
	NamedExecContext(context.Context, string, interface{}) (sql.Result, error)

	// QueryRowxContext queries the database and returns an *sqlx.Row.
	QueryRowxContext(context.Context, string, ...interface{}) *sqlx.Row

	// QueryxContext queries the database and returns an *sqlx.Rows and an error.
	QueryxContext(context.Context, string, ...interface{}) (*sqlx.Rows, error)

	// QueryContext queries the database and returns an *sql.Rows and an error.
	QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)

	// ExecContext executes a query without returning any rows.
	ExecContext(context.Context, string, ...interface{}) (sql.Result, error)

	// BeginTxx begins a transaction and returns an *sqlx.Tx.
	BeginTxx(ctx context.Context, opts *sql.TxOptions) (*sqlx.Tx, error)
}

Database provides a database interface.

func NewDatabase

func NewDatabase(db *sqlx.DB, config Config, tracer trace.Tracer) Database

NewDatabase creates a Clients'Database instance.

Jump to

Keyboard shortcuts

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