postgres

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jan 6, 2022 License: Apache-2.0 Imports: 16 Imported by: 41

Documentation

Index

Constants

View Source
const (
	TypeBit     = "bit"
	TypeBitVar  = "bit varying"
	TypeBoolean = "boolean"
	TypeBool    = "bool" // boolean.
	TypeBytea   = "bytea"

	TypeCharacter = "character"
	TypeChar      = "char" // character
	TypeCharVar   = "character varying"
	TypeVarChar   = "varchar" // character varying
	TypeText      = "text"

	TypeSmallInt = "smallint"
	TypeInteger  = "integer"
	TypeBigInt   = "bigint"
	TypeInt      = "int"  // integer.
	TypeInt2     = "int2" // smallint.
	TypeInt4     = "int4" // integer.
	TypeInt8     = "int8" // bigint.

	TypeCIDR     = "cidr"
	TypeInet     = "inet"
	TypeMACAddr  = "macaddr"
	TypeMACAddr8 = "macaddr8"

	TypeCircle  = "circle"
	TypeLine    = "line"
	TypeLseg    = "lseg"
	TypeBox     = "box"
	TypePath    = "path"
	TypePolygon = "polygon"
	TypePoint   = "point"

	TypeDate          = "date"
	TypeTime          = "time" // time without time zone
	TypeTimeWTZ       = "time with time zone"
	TypeTimeWOTZ      = "time without time zone"
	TypeTimestamp     = "timestamp" // timestamp without time zone
	TypeTimestampTZ   = "timestamptz"
	TypeTimestampWTZ  = "timestamp with time zone"
	TypeTimestampWOTZ = "timestamp without time zone"

	TypeDouble = "double precision"
	TypeReal   = "real"
	TypeFloat8 = "float8" // double precision
	TypeFloat4 = "float4" // real

	TypeNumeric = "numeric"
	TypeDecimal = "decimal" // numeric

	TypeSmallSerial = "smallserial" // smallint with auto_increment.
	TypeSerial      = "serial"      // integer with auto_increment.
	TypeBigSerial   = "bigserial"   // bigint with auto_increment.
	TypeSerial2     = "serial2"     // smallserial
	TypeSerial4     = "serial4"     // serial
	TypeSerial8     = "serial8"     // bigserial

	TypeArray       = "array"
	TypeXML         = "xml"
	TypeJSON        = "json"
	TypeJSONB       = "jsonb"
	TypeUUID        = "uuid"
	TypeMoney       = "money"
	TypeInterval    = "interval"
	TypeUserDefined = "user-defined"
)

Standard column types (and their aliases) as defined in PostgreSQL codebase/website.

Variables

View Source
var (

	// UnmarshalHCL unmarshals an Atlas HCL DDL document into v.
	UnmarshalHCL = schemaspec.UnmarshalerFunc(func(bytes []byte, i interface{}) error {
		return UnmarshalSpec(bytes, hclState, i)
	})
	// MarshalHCL marshals v into an Atlas HCL DDL document.
	MarshalHCL = schemaspec.MarshalerFunc(func(v interface{}) ([]byte, error) {
		return MarshalSpec(v, hclState)
	})
)
View Source
var TypeRegistry = specutil.NewRegistry(
	specutil.WithFormatter(FormatType),
	specutil.WithParser(parseRawType),
	specutil.WithSpecs(
		specutil.TypeSpec(TypeBit, &schemaspec.TypeAttr{Name: "len", Kind: reflect.Int64}),
		specutil.AliasTypeSpec("bit_varying", TypeBitVar, &schemaspec.TypeAttr{Name: "len", Kind: reflect.Int64}),
		specutil.TypeSpec(TypeVarChar, specutil.SizeTypeAttr(true)),
		specutil.AliasTypeSpec("character_varying", TypeCharVar, &schemaspec.TypeAttr{Name: "size", Kind: reflect.Int}),
		specutil.TypeSpec(TypeChar, specutil.SizeTypeAttr(true)),
		specutil.TypeSpec(TypeCharacter, specutil.SizeTypeAttr(true)),
		specutil.TypeSpec(TypeInt2),
		specutil.TypeSpec(TypeInt4),
		specutil.TypeSpec(TypeInt8),
		specutil.TypeSpec(TypeInt),
		specutil.TypeSpec(TypeInteger),
		specutil.TypeSpec(TypeSmallInt),
		specutil.TypeSpec(TypeBigInt),
		specutil.TypeSpec(TypeText),
		specutil.TypeSpec(TypeBoolean),
		specutil.TypeSpec(TypeBool),
		specutil.TypeSpec(TypeBytea),
		specutil.TypeSpec(TypeCIDR),
		specutil.TypeSpec(TypeInet),
		specutil.TypeSpec(TypeMACAddr),
		specutil.TypeSpec(TypeMACAddr8),
		specutil.TypeSpec(TypeCircle),
		specutil.TypeSpec(TypeLine),
		specutil.TypeSpec(TypeLseg),
		specutil.TypeSpec(TypeBox),
		specutil.TypeSpec(TypePath),
		specutil.TypeSpec(TypePoint),
		specutil.TypeSpec(TypeDate),
		specutil.TypeSpec(TypeTime),
		specutil.AliasTypeSpec("time_with_time_zone", TypeTimeWTZ),
		specutil.AliasTypeSpec("time_without_time_zone", TypeTimeWOTZ),
		specutil.TypeSpec(TypeTimestamp),
		specutil.AliasTypeSpec("timestamp_with_time_zone", TypeTimestampWTZ),
		specutil.AliasTypeSpec("timestamp_without_time_zone", TypeTimestampWOTZ),
		specutil.TypeSpec("enum", &schemaspec.TypeAttr{Name: "values", Kind: reflect.Slice, Required: true}),
		specutil.AliasTypeSpec("double_precision", TypeDouble),
		specutil.TypeSpec(TypeReal),
		specutil.TypeSpec(TypeFloat8),
		specutil.TypeSpec(TypeFloat4),
		specutil.TypeSpec(TypeNumeric),
		specutil.TypeSpec(TypeDecimal),
		specutil.TypeSpec(TypeSmallSerial),
		specutil.TypeSpec(TypeSerial),
		specutil.TypeSpec(TypeBigSerial),
		specutil.TypeSpec(TypeSerial2),
		specutil.TypeSpec(TypeSerial4),
		specutil.TypeSpec(TypeSerial8),
		specutil.TypeSpec(TypeXML),
		specutil.TypeSpec(TypeJSON),
		specutil.TypeSpec(TypeJSONB),
		specutil.TypeSpec(TypeUUID),
		specutil.TypeSpec(TypeMoney),
		specutil.TypeSpec("hstore"),
		specutil.TypeSpec("sql", &schemaspec.TypeAttr{Name: "def", Required: true, Kind: reflect.String}),
	),
)

TypeRegistry contains the supported TypeSpecs for the Postgres driver.

Functions

func Build

func Build(phrase string) *sqlx.Builder

Build instantiates a new builder and writes the given phrase to it.

func FormatType added in v0.2.0

func FormatType(t schema.Type) (string, error)

FormatType converts schema type to its column form in the database. An error is returned if the type cannot be recognized.

func MarshalSpec

func MarshalSpec(v interface{}, marshaler schemaspec.Marshaler) ([]byte, error)

MarshalSpec marshals v into an Atlas DDL document using a schemaspec.Marshaler.

func UnmarshalSpec

func UnmarshalSpec(data []byte, unmarshaler schemaspec.Unmarshaler, v interface{}) error

UnmarshalSpec unmarshals an Atlas DDL document using an unmarshaler into v.

Types

type ArrayType

type ArrayType struct {
	schema.Type
	T string
}

ArrayType defines an array type. https://www.postgresql.org/docs/current/arrays.html

type BitType

type BitType struct {
	schema.Type
	T   string
	Len int64
}

BitType defines a bit type. https://www.postgresql.org/docs/current/datatype-bit.html

type CType

type CType struct {
	schema.Attr
	V string
}

CType describes the character classification setting (LC_CTYPE).

type CheckColumns added in v0.2.0

type CheckColumns struct {
	schema.Attr
	Columns []string
}

CheckColumns attribute hold the column named used by the CHECK constraints. This attribute is added on inspection for internal usage and has no meaning on migration.

type ConType

type ConType struct {
	schema.Attr
	T string // c, f, p, u, t, x.
}

ConType describes constraint type. https://www.postgresql.org/docs/current/catalog-pg-constraint.html

type CurrencyType

type CurrencyType struct {
	schema.Type
	T string
}

A CurrencyType defines a currency type.

type Driver

type Driver struct {
	schema.Differ
	schema.Inspector
	migrate.PlanApplier
	// contains filtered or unexported fields
}

Driver represents a PostgreSQL driver for introspecting database schemas, generating diff between schema elements and apply migrations changes.

func Open

func Open(db schema.ExecQuerier) (*Driver, error)

Open opens a new PostgreSQL driver.

type EnumType

type EnumType struct {
	schema.Type
	T      string // Type name.
	ID     int64  // Type id.
	Values []string
}

EnumType represents an enum type.

type Identity

type Identity struct {
	schema.Attr
	Generation string // ALWAYS, BY DEFAULT.
	Sequence   *Sequence
}

Identity defines an identity column.

type IndexColumnProperty

type IndexColumnProperty struct {
	schema.Attr
	Asc        bool
	Desc       bool
	NullsFirst bool
	NullsLast  bool
}

IndexColumnProperty describes an index column property. https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-INDEX-COLUMN-PROPS

type IndexPredicate

type IndexPredicate struct {
	schema.Attr
	P string
}

IndexPredicate describes a partial index predicate. https://www.postgresql.org/docs/current/catalog-pg-index.html

type IndexType

type IndexType struct {
	schema.Attr
	T string // BTREE, BRIN, HASH, GiST, SP-GiST, GIN.
}

IndexType represents an index type. https://www.postgresql.org/docs/current/indexes-types.html

type NetworkType

type NetworkType struct {
	schema.Type
	T   string
	Len int64
}

A NetworkType defines a network type. https://www.postgresql.org/docs/current/datatype-net-types.html

type NoInherit added in v0.2.0

type NoInherit struct {
	schema.Attr
}

NoInherit attribute defines the NO INHERIT flag for CHECK constraint. https://www.postgresql.org/docs/current/catalog-pg-constraint.html

type Sequence added in v0.2.0

type Sequence struct {
	Start, Increment int64
}

Sequence defines (the supported) sequence options. https://www.postgresql.org/docs/current/sql-createsequence.html

type SerialType

type SerialType struct {
	schema.Type
	T         string
	Precision int
}

A SerialType defines a serial type.

type UUIDType

type UUIDType struct {
	schema.Type
	T string
}

A UUIDType defines a UUID type.

type UserDefinedType

type UserDefinedType struct {
	schema.Type
	T string
}

UserDefinedType defines a user-defined type attribute.

type XMLType

type XMLType struct {
	schema.Type
	T string
}

A XMLType defines an XML type.

Jump to

Keyboard shortcuts

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