cloudpostgres

package
v0.43.0 Latest Latest
Warning

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

Go to latest
Published: May 15, 2019 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package cloudpostgres provides connections to managed PostgreSQL Cloud SQL instances. See https://cloud.google.com/sql/docs/postgres/ for more information.

URLs

For postgres.Open, cloudpostgres registers for the scheme "cloudpostgres". The default URL opener will create a connection using the default credentials from the environment, as described in https://cloud.google.com/docs/authentication/production. To customize the URL opener, or for more details on the URL format, see URLOpener.

See https://github.com/eliben/gocdkx/concepts/urls/ for background information.

Example
package main

import (
	"context"
	"log"

	"github.com/eliben/gocdkx/gcp"
	"github.com/eliben/gocdkx/gcp/cloudsql"
	"github.com/eliben/gocdkx/postgres/cloudpostgres"
	"golang.org/x/oauth2"
	"golang.org/x/oauth2/google"
)

func main() {
	ctx := context.Background()
	creds, err := google.FindDefaultCredentials(ctx, "https://www.googleapis.com/auth/cloud-platform")
	if err != nil {
		log.Fatal(err)
	}
	authClient := gcp.HTTPClient{Client: *oauth2.NewClient(ctx, creds.TokenSource)}
	db, _, err := cloudpostgres.Open(ctx, cloudsql.NewCertSource(&authClient), &cloudpostgres.Params{
		// Replace these with your actual settings.
		ProjectID: "example-project",
		Region:    "us-central1",
		Instance:  "my-instance01",
		User:      "myrole",
		Database:  "test",
	})
	if err != nil {
		log.Fatal(err)
	}

	// Use database in your program.
	db.Exec("CREATE TABLE foo (bar INT);")
}
Output:

Index

Examples

Constants

View Source
const Scheme = "cloudpostgres"

Scheme is the URL scheme cloudpostgres registers its URLOpener under on postgres.DefaultMux.

Variables

This section is empty.

Functions

func Open

func Open(ctx context.Context, certSource proxy.CertSource, params *Params) (*sql.DB, func(), error)

Open opens a Cloud SQL database. The second return value is a cleanup function that calls Close on the returned database.

Types

type Params

type Params struct {
	// ProjectID is the project the instance is located in.
	ProjectID string
	// Region is the region the instance is located in.
	Region string
	// Instance is the name of the instance.
	Instance string

	// User is the database user to connect as.
	User string
	// Password is the database user password to use.
	Password string
	// Database is the PostgreSQL database name to connect to.
	Database string

	// Values sets additional parameters, as documented in
	// https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS.
	Values url.Values

	// TraceOpts contains options for OpenCensus.
	TraceOpts []ocsql.TraceOption
}

Params specifies how to connect to a Cloud SQL database.

type URLOpener

type URLOpener struct {
	// CertSource specifies how the opener will obtain authentication information.
	// CertSource must not be nil.
	CertSource proxy.CertSource

	// TraceOpts contains options for OpenCensus.
	TraceOpts []ocsql.TraceOption
}

URLOpener opens GCP PostgreSQL URLs like "cloudpostgres://user:password@myproject/us-central1/instanceId/mydb".

func (*URLOpener) OpenPostgresURL

func (uo *URLOpener) OpenPostgresURL(ctx context.Context, u *url.URL) (*sql.DB, error)

OpenPostgresURL opens a new GCP database connection wrapped with OpenCensus instrumentation.

Jump to

Keyboard shortcuts

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