postgresql

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2024 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func OpenDatabase added in v0.5.0

func OpenDatabase(connUrl string, databaseName string) (*sql.DB, error)

Types

type Database

type Database struct {
	Name               string `json:"name"`
	Owner              string `json:"owner"`
	Template           string `json:"template"`
	Encoding           string `json:"encoding"`
	Collation          string `json:"collation"`
	LcCtype            string `json:"lcCtype"`
	TablespaceName     string `json:"tablespaceName"`
	ConnectionLimit    int    `json:"connectionLimit"`
	IsTemplate         bool   `json:"isTemplate"`
	DisableConnections bool   `json:"disableConnections"`

	// Do not error if trying to create a database that already exists
	// Instead, read the existing and return
	UseExisting bool `json:"useExisting"`
}

func (Database) Key added in v0.7.0

func (d Database) Key() string

type Databases added in v0.5.0

type Databases struct {
	DbOpener DbOpener
}

func (*Databases) Create added in v0.5.0

func (d *Databases) Create(obj Database) (*Database, error)

func (*Databases) Drop added in v0.5.0

func (d *Databases) Drop(key string) (bool, error)

func (*Databases) Read added in v0.5.0

func (d *Databases) Read(key string) (*Database, error)

func (*Databases) Update added in v0.5.0

func (d *Databases) Update(key string, obj Database) (*Database, error)

type DbInfo

type DbInfo struct {
	DbVersion         semver.Version
	SupportedFeatures Features
	IsSuperuser       bool
	CurrentUser       string
}

func CalcDbConnectionInfo

func CalcDbConnectionInfo(db *sql.DB) (*DbInfo, error)

type DbOpener added in v0.5.6

type DbOpener interface {
	OpenDatabase(dbName string) (*sql.DB, error)
}

type DefaultGrant added in v0.5.0

type DefaultGrant struct {
	Id       string `json:"id"`
	Role     string `json:"role"`
	Target   string `json:"target"`
	Database string `json:"database"`
}

DefaultGrant defines a template of privileges that Role will be granted to Database This grants default privileges on schema objects created by Role in Database to Target

func (DefaultGrant) Key added in v0.5.0

func (g DefaultGrant) Key() DefaultGrantKey

func (*DefaultGrant) SetId added in v0.5.0

func (g *DefaultGrant) SetId()

type DefaultGrantKey added in v0.5.0

type DefaultGrantKey struct {
	Role     string
	Target   string
	Database string
}

type DefaultGrants added in v0.5.0

type DefaultGrants struct {
	DbOpener DbOpener
}

func (*DefaultGrants) Create added in v0.5.0

func (g *DefaultGrants) Create(grant DefaultGrant) (*DefaultGrant, error)

func (*DefaultGrants) Drop added in v0.5.0

func (g *DefaultGrants) Drop(key DefaultGrantKey) (bool, error)

func (*DefaultGrants) Read added in v0.5.0

func (*DefaultGrants) Update added in v0.5.0

func (g *DefaultGrants) Update(key DefaultGrantKey, grant DefaultGrant) (*DefaultGrant, error)

type FeatureName

type FeatureName uint
const (
	FeatureCreateRoleWith FeatureName = iota
	FeatureDBAllowConnections
	FeatureDBIsTemplate
	FeatureFallbackApplicationName
	FeatureRLS
	FeatureSchemaCreateIfNotExist
	FeatureReplication
	FeatureExtension
	FeaturePrivileges
	FeatureForceDropDatabase
	FeaturePid
)

type Features

type Features map[FeatureName]bool

func CalcSupportedFeatures

func CalcSupportedFeatures(dbVersion semver.Version) Features

func (Features) IsSupported

func (f Features) IsSupported(name FeatureName) bool

type NoopRevoker added in v0.1.1

type NoopRevoker struct {
}

func (NoopRevoker) Revoke added in v0.1.1

func (t NoopRevoker) Revoke(db *sql.DB) error

type Revoker added in v0.1.1

type Revoker interface {
	Revoke(db *sql.DB) error
}

func GrantRoleMembership added in v0.1.1

func GrantRoleMembership(db *sql.DB, role string, currentUser string) (Revoker, error)

GrantRoleMembership grants role membership of the target 'role' to the 'currentUser' This is used to perform commands if user is not a superuser For instance, when using AWS RDS, user is not given superuser It returns false if the grant is not needed because the user is already a member of this role.

type Role

type Role struct {
	Name     string `json:"name"`
	Password string `json:"password"`
	// Do not error if trying to create a role that already exists
	// Instead, read the existing, set the password, and return
	UseExisting bool `json:"useExisting"`
	// SkipPasswordUpdate informs Create to skip updating the role's password if the role already exists
	SkipPasswordUpdate bool `json:"-"`

	MemberOf   []string       `json:"memberOf"`
	Attributes RoleAttributes `json:"attributes"`
}

func (Role) Key added in v0.7.0

func (r Role) Key() string

type RoleAttributes added in v0.6.0

type RoleAttributes struct {
	CreateDb   bool `json:"createDb"`
	CreateRole bool `json:"createRole"`
}

type RoleMember added in v0.5.0

type RoleMember struct {
	// Member receives all the permissions for Target
	Member string `json:"member"`

	// Target is the role that gains an additional Member
	Target string `json:"target"`

	// WithAdminOption permits Member to grant it to others
	WithAdminOption bool `json:"withAdminOption"`

	// Do not error if trying to create a role membership that already exists
	// Instead, return the existing
	UseExisting bool `json:"useExisting"`
}

RoleMember adds Member to the Target role

func (RoleMember) Key added in v0.7.0

func (r RoleMember) Key() RoleMemberKey

type RoleMemberKey added in v0.5.0

type RoleMemberKey struct {
	Member string
	Target string
}

type RoleMembers added in v0.5.0

type RoleMembers struct {
	DbOpener DbOpener
}

func (*RoleMembers) Create added in v0.5.0

func (r *RoleMembers) Create(membership RoleMember) (*RoleMember, error)

func (*RoleMembers) Drop added in v0.5.0

func (r *RoleMembers) Drop(key RoleMemberKey) (bool, error)

func (*RoleMembers) Read added in v0.5.0

func (r *RoleMembers) Read(key RoleMemberKey) (*RoleMember, error)

func (*RoleMembers) Update added in v0.5.0

func (r *RoleMembers) Update(key RoleMemberKey, membership RoleMember) (*RoleMember, error)

type Roles added in v0.5.0

type Roles struct {
	DbOpener DbOpener
}

func (*Roles) Create added in v0.5.0

func (r *Roles) Create(role Role) (*Role, error)

func (*Roles) Drop added in v0.5.0

func (r *Roles) Drop(key string) (bool, error)

func (*Roles) Read added in v0.5.0

func (r *Roles) Read(key string) (*Role, error)

func (*Roles) Update added in v0.5.0

func (r *Roles) Update(key string, role Role) (*Role, error)

type SchemaPrivilege added in v0.5.0

type SchemaPrivilege struct {
	Role     string `json:"role"`
	Database string `json:"database"`
}

SchemaPrivilege grants to Role on Database

CREATE|USAGE on public schema
CREATE|CONNECT|TEMPORARY on database

func (SchemaPrivilege) Key added in v0.5.0

type SchemaPrivilegeKey added in v0.5.0

type SchemaPrivilegeKey struct {
	Role     string
	Database string
}

type SchemaPrivileges added in v0.5.0

type SchemaPrivileges struct {
	DbOpener DbOpener
}

func (*SchemaPrivileges) Create added in v0.5.0

func (*SchemaPrivileges) Drop added in v0.5.0

func (*SchemaPrivileges) Read added in v0.5.0

func (*SchemaPrivileges) Update added in v0.5.0

type Store added in v0.5.0

type Store struct {
	Databases        *Databases
	Roles            *Roles
	RoleMembers      *RoleMembers
	DefaultGrants    *DefaultGrants
	SchemaPrivileges *SchemaPrivileges

	sync.Mutex
	// contains filtered or unexported fields
}

func NewStore added in v0.5.0

func NewStore(connUrl string) *Store

func (*Store) Close added in v0.5.6

func (s *Store) Close()

func (*Store) ConnectionUrl added in v0.6.0

func (s *Store) ConnectionUrl() string

func (*Store) OpenDatabase added in v0.5.6

func (s *Store) OpenDatabase(dbName string) (*sql.DB, error)

type TempGrant

type TempGrant struct {
	Tx          *sql.Tx
	Role        string
	CurrentUser string
}

func (TempGrant) Revoke

func (t TempGrant) Revoke(db *sql.DB) error

Revoke revokes the role *role* from the user *member*. It returns false if the revoke is not needed because the user is not a member of this role.

Jump to

Keyboard shortcuts

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