postgres

package module
v3.0.0-...-fe5e310 Latest Latest
Warning

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

Go to latest
Published: Aug 24, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

README

Postgres plugin

This module implements a Postgres implementation of the micro store interface.

Implementation notes

Concepts

We maintain a single connection to the Postgres server. Due to the way connections are handled this means that all micro "databases" and "tables" are stored under a single Postgres database as specified in the connection string (https://www.postgresql.org/docs/8.1/ddl-schemas.html). The mapping of micro to Postgres concepts is:

  • micro database => Postgres schema
  • micro table => Postgres table
Expiry

Expiry is managed by an expiry column in the table. A record's expiry is specified in the column and when a record is read the expiry field is first checked, only returning the record if its still valid otherwise it's deleted. A maintenance loop also periodically runs to delete any rows that have expired.

Documentation

Overview

Package postgres implements the postgres store

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultDatabase = "micro"
	DefaultTable    = "micro"
	ErrNoConnection = errors.New("Database connection not initialized")
)

DefaultDatabase is the namespace that the sql store will use if no namespace is provided.

Functions

func NewStore

func NewStore(opts ...store.Option) store.Store

NewStore returns a new micro Store backed by sql

Types

type Metadata

type Metadata map[string]interface{}

Metadata https://github.com/upper/db/blob/master/postgresql/custom_types.go#L43

func (*Metadata) Scan

func (m *Metadata) Scan(src interface{}) error

Scan satisfies the sql.Scanner interface.

func (Metadata) Value

func (m Metadata) Value() (driver.Value, error)

Value satisfies the driver.Valuer interface.

Jump to

Keyboard shortcuts

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