Documentation
¶
Index ¶
- func QuoteIdentifier(name string) string
- func WithDatabase(database string) func(*Connection)
- func WithHost(host string) func(*Connection)
- func WithPassword(password string) func(*Connection)
- func WithPort(port string) func(*Connection)
- func WithSSL(ssl bool) func(*Connection)
- func WithUsername(username string) func(*Connection)
- type Connection
- type Connector
- type Database
- type DefaultPrivilege
- type Grant
- type Manager
- type User
- type UserOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func QuoteIdentifier ¶
QuoteIdentifier quotes an "identifier" (e.g. a table or a column name) to be used as part of an SQL statement. For example:
tblname := "my_table"
data := "my_data"
quoted := pq.QuoteIdentifier(tblname)
err := db.Exec(fmt.Sprintf("INSERT INTO %s VALUES ($1)", quoted), data)
Any double quotes in name will be escaped. The quoted identifier will be case sensitive when used in a query. If the input string contains a zero byte, the result will be truncated immediately before it.
This is a copy of the PostgreSQL libpq function so that we don't need to import the entire pq package.
func WithDatabase ¶
func WithDatabase(database string) func(*Connection)
WithDatabase sets the database in the connection configuration
func WithHost ¶
func WithHost(host string) func(*Connection)
WithHost sets the host in the connection configuration
func WithPassword ¶
func WithPassword(password string) func(*Connection)
WithPassword sets the password in the connection configuration
func WithPort ¶
func WithPort(port string) func(*Connection)
WithPort sets the port in the connection configuration
func WithSSL ¶
func WithSSL(ssl bool) func(*Connection)
WithSSL sets the SSL flag in the connection configuration
func WithUsername ¶
func WithUsername(username string) func(*Connection)
WithUsername sets the username in the connection configuration
Types ¶
type Connection ¶
type Connection struct {
Host string
Database string
Port string
Username string
Password string
SSLMode string
SSL bool
}
Connection represents the configuration for establishing a connection
type Database ¶
type Database struct {
Name string `json:"name"`
DefaultPrivileges []DefaultPrivilege `json:"default_privileges"`
Owner string `json:"owner"`
}
Database represents the configuration for creating a database
type DefaultPrivilege ¶
type DefaultPrivilege struct {
Role string `json:"role"`
Schema string `json:"schema"`
Grant []string `json:"grant"`
On string `json:"on"`
To string `json:"to"`
WithGrant bool `json:"with_grant"`
}
DefaultPrivilege contains the default privileges in a database for a user or role.
type Grant ¶
type Grant struct {
// Optional: Specify the target database
Database string `json:"database"`
// Optional: Specify the target schema
Schema string `json:"schema"`
// Optional: Specify the target Sequence
Sequence string `json:"sequence"`
// Optional: Specify the target table
Table string `json:"table"`
// Optional: Specify the target parameter (PostgreSQL only)
Parameter string `json:"parameter"`
// Required: List of privileges (e.g., "ALL", "CONNECT", "USAGE", "SELECT", etc.)
Privileges []string `json:"privileges"`
// Optional: Grant option
WithGrant bool `json:"with_grant"`
}
Grant represents a set of permissions granted to a user.
type Manager ¶
type Manager interface {
Connector
CreateDatabase(databaseConfig Database) error
CreateUser(userConfig User) error
GrantPermissions(user User) error
Manage(databases []Database, users []User) error
}
Manager is the main interface for managing database servers
type User ¶
type User struct {
Name string `json:"name"`
Password string `json:"password"`
Options UserOptions `json:"options"`
Grants []Grant `json:"grants"`
Roles []string `json:"roles"`
}
User represents the configuration for creating a user
type UserOptions ¶
type UserOptions struct {
// Login specifies whether the user is allowed to log in to the database. Applicable to PostgreSQL only.
Login bool `json:"login"`
// Superuser specifies whether the user will be a superuser. Applicable to PostgreSQL only.
Superuser bool `json:"superuser"`
// CreateDatabase specifies whether the user will be allowed to create databases. Applicable to PostgreSQL only.
CreateDatabase bool `json:"create_database"`
// CreateRole specifies whether the user will be allowed to create roles. Applicable to PostgreSQL only.
CreateRole bool `json:"create_role"`
// Inherit specifies whether the user will inherit privileges of roles that it is a member of. Applicable to PostgreSQL only.
Inherit bool `json:"inherit"`
// Replication specifies whether the user will be allowed to initiate streaming replication. Applicable to PostgreSQL only.
Replication bool `json:"replication"`
// BypassRLS specifies whether the user will be allowed to bypass row level security policies. Applicable to PostgreSQL only.
BypassRLS bool `json:"bypass_rls"`
}
UserOptions represents the configuration for creating a user