postgres

package
v0.3.3 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2019 License: Apache-2.0, BSD-3-Clause, MIT Imports: 27 Imported by: 1

Documentation

Index

Constants

View Source
const BrokerTable = "brokers"
View Source
const NotificationTable = "notifications"
View Source
const PlatformTable = "platforms"
View Source
const ServiceOfferingTable = "service_offerings"
View Source
const ServicePlanTable = "service_plans"
View Source
const VisibilityTable = "visibilities"

Variables

This section is empty.

Functions

func NewNotificationStorage added in v0.3.0

func NewNotificationStorage(st storage.Storage) (*notificationStorageImpl, error)

NewNotificationStorage returns new notification storage

Types

type BaseEntity added in v0.2.0

type BaseEntity struct {
	ID        string    `db:"id"`
	CreatedAt time.Time `db:"created_at"`
	UpdatedAt time.Time `db:"updated_at"`
}

func (*BaseEntity) BuildLabels added in v0.2.0

func (e *BaseEntity) BuildLabels(labels types.Labels, newLabel func(id, key, value string) storage.Label) ([]storage.Label, error)

func (*BaseEntity) GetID added in v0.2.0

func (e *BaseEntity) GetID() string

type BaseLabelEntity added in v0.2.0

type BaseLabelEntity struct {
	ID        sql.NullString `db:"id"`
	Key       sql.NullString `db:"key"`
	Val       sql.NullString `db:"val"`
	CreatedAt pq.NullTime    `db:"created_at"`
	UpdatedAt pq.NullTime    `db:"updated_at"`
}

func (BaseLabelEntity) GetKey added in v0.2.0

func (el BaseLabelEntity) GetKey() string

func (BaseLabelEntity) GetValue added in v0.2.0

func (el BaseLabelEntity) GetValue() string

func (BaseLabelEntity) LabelsPrimaryColumn added in v0.2.0

func (el BaseLabelEntity) LabelsPrimaryColumn() string

type Broker

type Broker struct {
	BaseEntity
	Name        string             `db:"name"`
	Description sql.NullString     `db:"description"`
	BrokerURL   string             `db:"broker_url"`
	Username    string             `db:"username"`
	Password    string             `db:"password"`
	Catalog     sqlxtypes.JSONText `db:"catalog"`

	Services []*ServiceOffering `db:"-"`
}

Broker entity

func (*Broker) FromObject added in v0.2.0

func (*Broker) FromObject(object types.Object) (storage.Entity, bool)

func (*Broker) LabelEntity added in v0.2.0

func (*Broker) LabelEntity() PostgresLabel

func (*Broker) NewLabel added in v0.2.0

func (e *Broker) NewLabel(id, key, value string) storage.Label

func (*Broker) RowsToList added in v0.2.0

func (e *Broker) RowsToList(rows *sqlx.Rows) (types.ObjectList, error)

func (*Broker) TableName added in v0.2.0

func (*Broker) TableName() string

func (*Broker) ToObject added in v0.2.0

func (e *Broker) ToObject() types.Object

type BrokerLabel added in v0.1.8

type BrokerLabel struct {
	BaseLabelEntity
	BrokerID sql.NullString `db:"broker_id"`
}

func (BrokerLabel) LabelsTableName added in v0.2.0

func (el BrokerLabel) LabelsTableName() string

func (BrokerLabel) ReferenceColumn added in v0.2.0

func (el BrokerLabel) ReferenceColumn() string

type EntityLabelRow added in v0.2.0

type EntityLabelRow interface {
	PostgresEntity
	PostgresLabel
}

type EntityLabelRowCreator added in v0.2.0

type EntityLabelRowCreator func() EntityLabelRow

type Notification added in v0.3.0

type Notification struct {
	BaseEntity
	Resource   string             `db:"resource"`
	Type       string             `db:"type"`
	PlatformID sql.NullString     `db:"platform_id"`
	Revision   int64              `db:"revision,auto_increment"`
	Payload    sqlxtypes.JSONText `db:"payload"`
}

Notification entity

func (*Notification) FromObject added in v0.3.0

func (*Notification) FromObject(object types.Object) (storage.Entity, bool)

func (*Notification) LabelEntity added in v0.3.0

func (*Notification) LabelEntity() PostgresLabel

func (*Notification) NewLabel added in v0.3.0

func (e *Notification) NewLabel(id, key, value string) storage.Label

func (*Notification) RowsToList added in v0.3.0

func (e *Notification) RowsToList(rows *sqlx.Rows) (types.ObjectList, error)

func (*Notification) TableName added in v0.3.0

func (*Notification) TableName() string

func (*Notification) ToObject added in v0.3.0

func (n *Notification) ToObject() types.Object

type NotificationLabel added in v0.3.0

type NotificationLabel struct {
	BaseLabelEntity
	NotificationID sql.NullString `db:"notification_id"`
}

func (NotificationLabel) LabelsTableName added in v0.3.0

func (el NotificationLabel) LabelsTableName() string

func (NotificationLabel) ReferenceColumn added in v0.3.0

func (el NotificationLabel) ReferenceColumn() string

type Notificator added in v0.3.0

type Notificator struct {
	// contains filtered or unexported fields
}

func NewNotificator added in v0.3.0

func NewNotificator(st storage.Storage, settings *storage.Settings) (*Notificator, error)

NewNotificator returns new Notificator based on a given NotificatorStorage and desired queue size

func (*Notificator) RegisterConsumer added in v0.3.0

func (n *Notificator) RegisterConsumer(consumer *types.Platform, lastKnownRevision int64) (storage.NotificationQueue, int64, error)

func (*Notificator) RegisterFilter added in v0.3.3

func (n *Notificator) RegisterFilter(f storage.ReceiversFilterFunc)

RegisterFilter adds new notification filter. It must not be called concurrently.

func (*Notificator) Start added in v0.3.0

func (n *Notificator) Start(ctx context.Context, group *sync.WaitGroup) error

Start starts the Notificator. It must not be called concurrently.

func (*Notificator) UnregisterConsumer added in v0.3.0

func (n *Notificator) UnregisterConsumer(queue storage.NotificationQueue) error

type Platform

type Platform struct {
	BaseEntity
	Type        string         `db:"type"`
	Name        string         `db:"name"`
	Description sql.NullString `db:"description"`
	Username    string         `db:"username"`
	Password    string         `db:"password"`
}

Platform entity

func (*Platform) FromObject added in v0.2.0

func (p *Platform) FromObject(object types.Object) (storage.Entity, bool)

func (*Platform) LabelEntity added in v0.2.0

func (*Platform) LabelEntity() PostgresLabel

func (*Platform) NewLabel added in v0.2.0

func (e *Platform) NewLabel(id, key, value string) storage.Label

func (*Platform) RowsToList added in v0.2.0

func (e *Platform) RowsToList(rows *sqlx.Rows) (types.ObjectList, error)

func (*Platform) TableName added in v0.2.0

func (*Platform) TableName() string

func (*Platform) ToObject added in v0.2.0

func (p *Platform) ToObject() types.Object

type PlatformLabel added in v0.2.0

type PlatformLabel struct {
	BaseLabelEntity
	PlatformID sql.NullString `db:"platform_id"`
}

func (PlatformLabel) LabelsTableName added in v0.2.0

func (el PlatformLabel) LabelsTableName() string

func (PlatformLabel) ReferenceColumn added in v0.2.0

func (el PlatformLabel) ReferenceColumn() string

type PostgresEntity added in v0.2.0

type PostgresEntity interface {
	storage.Entity
	TableName() string
	RowsToList(rows *sqlx.Rows) (types.ObjectList, error)
	LabelEntity() PostgresLabel
}

type PostgresLabel added in v0.2.0

type PostgresLabel interface {
	storage.Label
	LabelsTableName() string
	LabelsPrimaryColumn() string
	ReferenceColumn() string
}

type Safe

type Safe struct {
	Secret    []byte    `db:"secret"`
	CreatedAt time.Time `db:"created_at"`
	UpdatedAt time.Time `db:"updated_at"`
}

Safe represents a secret entity

type ServiceOffering added in v0.1.2

type ServiceOffering struct {
	BaseEntity
	Name        string `db:"name"`
	Description string `db:"description"`

	Bindable             bool   `db:"bindable"`
	InstancesRetrievable bool   `db:"instances_retrievable"`
	BindingsRetrievable  bool   `db:"bindings_retrievable"`
	PlanUpdatable        bool   `db:"plan_updateable"`
	CatalogID            string `db:"catalog_id"`
	CatalogName          string `db:"catalog_name"`

	Tags     sqlxtypes.JSONText `db:"tags"`
	Requires sqlxtypes.JSONText `db:"requires"`
	Metadata sqlxtypes.JSONText `db:"metadata"`

	BrokerID string         `db:"broker_id"`
	Plans    []*ServicePlan `db:"-"`
}

func (*ServiceOffering) FromObject added in v0.2.0

func (*ServiceOffering) FromObject(object types.Object) (storage.Entity, bool)

func (*ServiceOffering) LabelEntity added in v0.2.0

func (*ServiceOffering) LabelEntity() PostgresLabel

func (*ServiceOffering) NewLabel added in v0.2.0

func (e *ServiceOffering) NewLabel(id, key, value string) storage.Label

func (*ServiceOffering) RowsToList added in v0.2.0

func (e *ServiceOffering) RowsToList(rows *sqlx.Rows) (types.ObjectList, error)

func (*ServiceOffering) TableName added in v0.2.0

func (*ServiceOffering) TableName() string

func (*ServiceOffering) ToObject added in v0.2.0

func (e *ServiceOffering) ToObject() types.Object

type ServiceOfferingLabel added in v0.2.0

type ServiceOfferingLabel struct {
	BaseLabelEntity
	ServiceOfferingID sql.NullString `db:"service_offering_id"`
}

func (ServiceOfferingLabel) LabelsTableName added in v0.2.0

func (el ServiceOfferingLabel) LabelsTableName() string

func (ServiceOfferingLabel) ReferenceColumn added in v0.2.0

func (el ServiceOfferingLabel) ReferenceColumn() string

type ServicePlan added in v0.1.2

type ServicePlan struct {
	BaseEntity
	Name        string `db:"name"`
	Description string `db:"description"`

	Free          bool   `db:"free"`
	Bindable      bool   `db:"bindable"`
	PlanUpdatable bool   `db:"plan_updateable"`
	CatalogID     string `db:"catalog_id"`
	CatalogName   string `db:"catalog_name"`

	Metadata sqlxtypes.JSONText `db:"metadata"`
	Schemas  sqlxtypes.JSONText `db:"schemas"`

	ServiceOfferingID string `db:"service_offering_id"`
}

func (*ServicePlan) FromObject added in v0.2.0

func (sp *ServicePlan) FromObject(object types.Object) (storage.Entity, bool)

func (*ServicePlan) LabelEntity added in v0.2.0

func (*ServicePlan) LabelEntity() PostgresLabel

func (*ServicePlan) NewLabel added in v0.2.0

func (e *ServicePlan) NewLabel(id, key, value string) storage.Label

func (*ServicePlan) RowsToList added in v0.2.0

func (e *ServicePlan) RowsToList(rows *sqlx.Rows) (types.ObjectList, error)

func (*ServicePlan) TableName added in v0.2.0

func (*ServicePlan) TableName() string

func (*ServicePlan) ToObject added in v0.2.0

func (sp *ServicePlan) ToObject() types.Object

type ServicePlanLabel added in v0.2.0

type ServicePlanLabel struct {
	BaseLabelEntity
	ServicePlanID sql.NullString `db:"service_plan_id"`
}

func (ServicePlanLabel) LabelsTableName added in v0.2.0

func (el ServicePlanLabel) LabelsTableName() string

func (ServicePlanLabel) ReferenceColumn added in v0.2.0

func (el ServicePlanLabel) ReferenceColumn() string

type Storage

type Storage struct {
	ConnectFunc func(driver string, url string) (*sql.DB, error)
	// contains filtered or unexported fields
}

func (*Storage) Close added in v0.3.3

func (ps *Storage) Close() error

func (*Storage) Create added in v0.3.3

func (ps *Storage) Create(ctx context.Context, obj types.Object) (types.Object, error)

func (*Storage) Delete added in v0.3.3

func (ps *Storage) Delete(ctx context.Context, objType types.ObjectType, criteria ...query.Criterion) (types.ObjectList, error)

func (*Storage) Get added in v0.3.3

func (ps *Storage) Get(ctx context.Context, objectType types.ObjectType, id string) (types.Object, error)

func (*Storage) GetEncryptionKey added in v0.3.3

func (s *Storage) GetEncryptionKey(ctx context.Context, transformationFunc func(context.Context, []byte, []byte) ([]byte, error)) ([]byte, error)

GetEncryptionKey returns the encryption key used to encrypt the credentials for brokers

func (*Storage) InTransaction added in v0.3.3

func (ps *Storage) InTransaction(ctx context.Context, f func(ctx context.Context, storage storage.Repository) error) error

func (*Storage) Introduce added in v0.3.3

func (ps *Storage) Introduce(entity storage.Entity)

func (*Storage) List added in v0.3.3

func (ps *Storage) List(ctx context.Context, objType types.ObjectType, criteria ...query.Criterion) (types.ObjectList, error)

func (*Storage) Lock added in v0.3.3

func (s *Storage) Lock(ctx context.Context) error

Lock acquires a database lock so that only one process can manipulate the encryption key. Returns an error if the process has already acquired the lock

func (*Storage) Open added in v0.3.3

func (ps *Storage) Open(settings *storage.Settings) error

func (*Storage) Ping added in v0.3.3

func (ps *Storage) Ping() error

func (*Storage) SelectContext added in v0.3.3

func (ps *Storage) SelectContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error

func (*Storage) SetEncryptionKey added in v0.3.3

func (s *Storage) SetEncryptionKey(ctx context.Context, key []byte, transformationFunc func(context.Context, []byte, []byte) ([]byte, error)) error

SetEncryptionKey Sets the encryption key by encrypting it beforehand with the encryption key in the environment

func (*Storage) Unlock added in v0.3.3

func (s *Storage) Unlock(ctx context.Context) error

Unlock releases the database lock.

func (*Storage) Update added in v0.3.3

func (ps *Storage) Update(ctx context.Context, obj types.Object, labelChanges ...*query.LabelChange) (types.Object, error)

type Visibility added in v0.1.6

type Visibility struct {
	BaseEntity
	PlatformID    sql.NullString `db:"platform_id"`
	ServicePlanID string         `db:"service_plan_id"`
}

func (*Visibility) FromObject added in v0.2.0

func (v *Visibility) FromObject(visibility types.Object) (storage.Entity, bool)

func (*Visibility) LabelEntity added in v0.2.0

func (*Visibility) LabelEntity() PostgresLabel

func (*Visibility) NewLabel added in v0.2.0

func (e *Visibility) NewLabel(id, key, value string) storage.Label

func (*Visibility) RowsToList added in v0.2.0

func (e *Visibility) RowsToList(rows *sqlx.Rows) (types.ObjectList, error)

func (*Visibility) TableName added in v0.2.0

func (*Visibility) TableName() string

func (*Visibility) ToObject added in v0.2.0

func (v *Visibility) ToObject() types.Object

type VisibilityLabel added in v0.1.8

type VisibilityLabel struct {
	BaseLabelEntity
	VisibilityID sql.NullString `db:"visibility_id"`
}

func (VisibilityLabel) LabelsTableName added in v0.2.0

func (el VisibilityLabel) LabelsTableName() string

func (VisibilityLabel) ReferenceColumn added in v0.2.0

func (el VisibilityLabel) ReferenceColumn() string

Directories

Path Synopsis
notification_connectionfakes
Code generated by counterfeiter.
Code generated by counterfeiter.
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

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